Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Node-Red
  5. Bestimmte Daten aus Json extrahieren

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.2k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.2k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.5k

Bestimmte Daten aus Json extrahieren

Geplant Angeheftet Gesperrt Verschoben Node-Red
node-red
12 Beiträge 5 Kommentatoren 3.3k Aufrufe 4 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • kmxakK Offline
    kmxakK Offline
    kmxak
    Most Active
    schrieb am zuletzt editiert von
    #1

    Ich habe ein Json Object wo ich gerne einen Teil extrahieren möchte und damit weiterarbeiten wollen würde.
    Json ist wie folgt aufgebaut:

    {"192.168.2.1":"XX:XX:XX:XXXX:XX; AVM Audiovisuelles Marketing und Computersysteme GmbH; fritz.box; www.fritz.box; myfritz.box; www.myfritz.box; fritz.nas; www.fritz.nas; fritz-nas.fritz.box; fritz-nas.box; wpad.box; wpad.fritz.box","192.168.2.2":"XX:XX:XX:XXXX:XX; ASUSTek COMPUTER INC.; Asus-W-Lan.fritz.box"}
    

    Ich würde mir da gerne alle Mac Adressen (XX:XX:XX:XXXX:XX) rausziehen.

    Weiß da einer weiter?

    Gruß Alex

    R 1 Antwort Letzte Antwort
    0
    • ThisoftT Offline
      ThisoftT Offline
      Thisoft
      schrieb am zuletzt editiert von
      #2

      Prinzipiell geht das per Javascript, per Blockly, per NodeRed und sehr wahrscheinlich auch mit dem Parser-Adapter.
      Womit könntest du dich denn am ehesten anfreunden? Bei Javascript und evtl. noch NodeRed könnte ich dir später mal ein Beispiel basteln. Die anderen Beiden sind nicht meine Baustelle...

      22 HM-Geräte; PivCCU2 auf RasPi

      ioBroker-Multihost; Ubuntu-Master auf Intel-Atom und 3 RasPi-Clients

      1 Antwort Letzte Antwort
      0
      • kmxakK kmxak

        Ich habe ein Json Object wo ich gerne einen Teil extrahieren möchte und damit weiterarbeiten wollen würde.
        Json ist wie folgt aufgebaut:

        {"192.168.2.1":"XX:XX:XX:XXXX:XX; AVM Audiovisuelles Marketing und Computersysteme GmbH; fritz.box; www.fritz.box; myfritz.box; www.myfritz.box; fritz.nas; www.fritz.nas; fritz-nas.fritz.box; fritz-nas.box; wpad.box; wpad.fritz.box","192.168.2.2":"XX:XX:XX:XXXX:XX; ASUSTek COMPUTER INC.; Asus-W-Lan.fritz.box"}
        

        Ich würde mir da gerne alle Mac Adressen (XX:XX:XX:XXXX:XX) rausziehen.

        Weiß da einer weiter?

        R Offline
        R Offline
        rewenode
        schrieb am zuletzt editiert von
        #3

        @kmxak Da du das unter Node-Red gepostest hast, geh ich davon aus, dass du das unter Node-Red lösen willst.
        Spontan fallen mir 2 Lösungen ein:

        1. function-node mit JS-String Funktionen.
        2. Ein change-node:
        [
            {
                "id": "4edb422a.002f34",
                "type": "inject",
                "z": "1770f773.c5c8e1",
                "name": "Dein Beispiel json",
                "topic": "",
                "payload": "{\"192.168.2.1\":\"XX:XX:XX:XXXX:XX; AVM Audiovisuelles Marketing und Computersysteme GmbH; fritz.box; www.fritz.box; myfritz.box; www.myfritz.box; fritz.nas; www.fritz.nas; fritz-nas.fritz.box; fritz-nas.box; wpad.box; wpad.fritz.box\",\"192.168.2.2\":\"XX:XX:XX:XXXX:XX; ASUSTek COMPUTER INC.; Asus-W-Lan.fritz.box\"}",
                "payloadType": "json",
                "repeat": "",
                "crontab": "",
                "once": false,
                "onceDelay": 0.1,
                "x": 190,
                "y": 160,
                "wires": [
                    [
                        "a503f6c3.b38ea8"
                    ]
                ]
            },
            {
                "id": "c9d744be.4b6e5",
                "type": "debug",
                "z": "1770f773.c5c8e1",
                "name": "",
                "active": true,
                "tosidebar": true,
                "console": false,
                "tostatus": false,
                "complete": "false",
                "x": 590,
                "y": 160,
                "wires": []
            },
            {
                "id": "a503f6c3.b38ea8",
                "type": "change",
                "z": "1770f773.c5c8e1",
                "name": "extract MAC",
                "rules": [
                    {
                        "t": "set",
                        "p": "payload",
                        "pt": "msg",
                        "to": "$map(payload.*, function($v) {$substringBefore($v, \";\")} )",
                        "tot": "jsonata"
                    }
                ],
                "action": "",
                "property": "",
                "from": "",
                "to": "",
                "reg": false,
                "x": 390,
                "y": 160,
                "wires": [
                    [
                        "c9d744be.4b6e5"
                    ]
                ]
            }
        ]
        
        liv-in-skyL 1 Antwort Letzte Antwort
        0
        • kmxakK Offline
          kmxakK Offline
          kmxak
          Most Active
          schrieb am zuletzt editiert von
          #4

          moin, danke für die hilfen.

          den teil verstehe ich überhaupt nicht ist aber der teil der wahrscheinlich am wichtigsten ist.

          $map(payload.*, function($v) {$substringBefore($v, ";")} )
          

          Habe es nun aber mit deinem Beispiel ans laufen bekommen.
          Musste aber noch ein Json to Object dazwischen verwenden.

          :+1:

          Gruß Alex

          R 1 Antwort Letzte Antwort
          0
          • R rewenode

            @kmxak Da du das unter Node-Red gepostest hast, geh ich davon aus, dass du das unter Node-Red lösen willst.
            Spontan fallen mir 2 Lösungen ein:

            1. function-node mit JS-String Funktionen.
            2. Ein change-node:
            [
                {
                    "id": "4edb422a.002f34",
                    "type": "inject",
                    "z": "1770f773.c5c8e1",
                    "name": "Dein Beispiel json",
                    "topic": "",
                    "payload": "{\"192.168.2.1\":\"XX:XX:XX:XXXX:XX; AVM Audiovisuelles Marketing und Computersysteme GmbH; fritz.box; www.fritz.box; myfritz.box; www.myfritz.box; fritz.nas; www.fritz.nas; fritz-nas.fritz.box; fritz-nas.box; wpad.box; wpad.fritz.box\",\"192.168.2.2\":\"XX:XX:XX:XXXX:XX; ASUSTek COMPUTER INC.; Asus-W-Lan.fritz.box\"}",
                    "payloadType": "json",
                    "repeat": "",
                    "crontab": "",
                    "once": false,
                    "onceDelay": 0.1,
                    "x": 190,
                    "y": 160,
                    "wires": [
                        [
                            "a503f6c3.b38ea8"
                        ]
                    ]
                },
                {
                    "id": "c9d744be.4b6e5",
                    "type": "debug",
                    "z": "1770f773.c5c8e1",
                    "name": "",
                    "active": true,
                    "tosidebar": true,
                    "console": false,
                    "tostatus": false,
                    "complete": "false",
                    "x": 590,
                    "y": 160,
                    "wires": []
                },
                {
                    "id": "a503f6c3.b38ea8",
                    "type": "change",
                    "z": "1770f773.c5c8e1",
                    "name": "extract MAC",
                    "rules": [
                        {
                            "t": "set",
                            "p": "payload",
                            "pt": "msg",
                            "to": "$map(payload.*, function($v) {$substringBefore($v, \";\")} )",
                            "tot": "jsonata"
                        }
                    ],
                    "action": "",
                    "property": "",
                    "from": "",
                    "to": "",
                    "reg": false,
                    "x": 390,
                    "y": 160,
                    "wires": [
                        [
                            "c9d744be.4b6e5"
                        ]
                    ]
                }
            ]
            
            liv-in-skyL Offline
            liv-in-skyL Offline
            liv-in-sky
            schrieb am zuletzt editiert von
            #5

            @rewenode

            darf ich mal kurz was fragen: du benutzt jsonata - oder - deshalb auch die $-zeichen

            falls so etwas in js zu machen wäre, muss dann var jsonata = require("jsonata" im script stehen - danach funktioniert das auch in js ?
            in blockly müßte ich dann wahrscheinlich eine js-function einfügen ?

            bitte nicht genervt sein - bin noch am einarbeiten

            nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

            1 Antwort Letzte Antwort
            0
            • kmxakK kmxak

              moin, danke für die hilfen.

              den teil verstehe ich überhaupt nicht ist aber der teil der wahrscheinlich am wichtigsten ist.

              $map(payload.*, function($v) {$substringBefore($v, ";")} )
              

              Habe es nun aber mit deinem Beispiel ans laufen bekommen.
              Musste aber noch ein Json to Object dazwischen verwenden.

              :+1:

              R Offline
              R Offline
              rewenode
              schrieb am zuletzt editiert von rewenode
              #6

              @kmxak sagte in Bestimmte Daten aus Json extrahieren:

              den teil verstehe ich überhaupt nicht ist aber der teil der wahrscheinlich am wichtigsten ist.

              Ja, das ist JSonata.
              Eine extrem mächtige Sprache, die bei dieser Aufgabe sicher nicht nötig ist. Allerdings haben die node-red Entwickler sie u.a. in den change-node integriert, weshalb ich sie hier verwende. Im change-node steht natives JavaScript nicht zur Verfügung, damit würde es genauso einfach gehen.

              @liv-in-sky sagte in Bestimmte Daten aus Json extrahieren:

              falls so etwas in js zu machen wäre, muss dann var jsonata = require("jsonata" im script stehen - danach funktioniert das auch in js ?

              In einem reinen JavaScript ja. Allerdings muss die Abfrage dann noch in einen String verpackt werden, also syntaktisch etwas komplizierter.
              Im node-red-function-node ist das auch möglich, allerdings nicht mit require("jsonata"). Jsonata muss da schon über die Settings.js eingebunden werden.
              (geht auch über Funktionen in RED aber das ist nicht offiziell dokumentiert)
              Eigentlich ist das aber unnötig, da JSonata komfortabel in wichtige core-nodes integriert ist.

              @liv-in-sky sagte in Bestimmte Daten aus Json extrahieren:

              bitte nicht genervt sein - bin noch am einarbeiten

              Genervt bin ich nur, wenn mein Rechner mal wieder ...;-)

              PS.

              @liv-in-sky sagte in Bestimmte Daten aus Json extrahieren:

              in blockly müßte ich dann wahrscheinlich eine js-function einfügen ?

              blocky habe ich noch nie verwendet, da weis sicher jemand Anders besser bescheid.

              1 Antwort Letzte Antwort
              0
              • liv-in-skyL Offline
                liv-in-skyL Offline
                liv-in-sky
                schrieb am zuletzt editiert von
                #7

                @rewenode

                danke dir für die erläuterung

                ich weiß nicht warum, aber mit js werd ich einfach nicht warm. ich mache solche "umwandlungen" auch immer über node red - bin ganz froh dein beispiel gefunden zu haben, mal sehen, ob oder wie ich das in mein thema einbauen kann - da muss wohl noch geübt werden :-(

                nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                1 Antwort Letzte Antwort
                0
                • R Offline
                  R Offline
                  rewenode
                  schrieb am zuletzt editiert von
                  #8

                  @liv-in-sky sagte in Bestimmte Daten aus Json extrahieren:

                  ich weiß nicht warum, aber mit js werd ich einfach nicht warm

                  Da ist node-red doch ein prima Einstieg. Da lernt sich JS fast nebenbei.

                  1 Antwort Letzte Antwort
                  0
                  • kmxakK Offline
                    kmxakK Offline
                    kmxak
                    Most Active
                    schrieb am zuletzt editiert von
                    #9

                    ist finde nodered extrem schwierig...

                    in blockly müsste man das auch easy einfügen können. ich kenne mich aber leider mit json umwandeln usw gar nicht aus.

                    Gruß Alex

                    R iomountainI 2 Antworten Letzte Antwort
                    0
                    • kmxakK kmxak

                      ist finde nodered extrem schwierig...

                      in blockly müsste man das auch easy einfügen können. ich kenne mich aber leider mit json umwandeln usw gar nicht aus.

                      R Offline
                      R Offline
                      rewenode
                      schrieb am zuletzt editiert von
                      #10

                      @kmxak sagte in Bestimmte Daten aus Json extrahieren:

                      in blockly müsste man das auch easy einfügen können.

                      wollte grad sagen: mach mal ;-)

                      Früher gab es Peitschen zum geißeln. Der moderne Hobbyprogrammierer nimmt JSONata, REBOL oder Regex ;-)

                      1 Antwort Letzte Antwort
                      1
                      • kmxakK kmxak

                        ist finde nodered extrem schwierig...

                        in blockly müsste man das auch easy einfügen können. ich kenne mich aber leider mit json umwandeln usw gar nicht aus.

                        iomountainI Offline
                        iomountainI Offline
                        iomountain
                        schrieb am zuletzt editiert von
                        #11

                        @kmxak sagte in Bestimmte Daten aus Json extrahieren:

                        in blockly müsste man das auch easy einfügen können.

                        Einen Baustein habe ich dafür noch nicht gefunden, hab Ihn mal auf die Wunschliste gepackt:
                        Wunschliste Blockly-Elemente

                        1 Antwort Letzte Antwort
                        0
                        • kmxakK Offline
                          kmxakK Offline
                          kmxak
                          Most Active
                          schrieb am zuletzt editiert von
                          #12

                          du musst da diesen block nehmen und den javascript händisch einfügen.

                          <block xmlns="http://www.w3.org/1999/xhtml" type="procedures_defcustomnoreturn" id="a~0sZz~Kq[gHY%LwB*2D" x="112.83273983001686" y="212.54544067382812">
                            <mutation statements="false"></mutation>
                            <field name="NAME">etwas tun</field>
                            <field name="SCRIPT"></field>
                            <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                          </block>
                          

                          Gruß Alex

                          1 Antwort Letzte Antwort
                          1
                          Antworten
                          • In einem neuen Thema antworten
                          Anmelden zum Antworten
                          • Älteste zuerst
                          • Neuste zuerst
                          • Meiste Stimmen


                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          778

                          Online

                          32.5k

                          Benutzer

                          81.7k

                          Themen

                          1.3m

                          Beiträge
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                          ioBroker Community 2014-2025
                          logo
                          • Anmelden

                          • Du hast noch kein Konto? Registrieren

                          • Anmelden oder registrieren, um zu suchen
                          • Erster Beitrag
                            Letzter Beitrag
                          0
                          • Home
                          • Aktuell
                          • Tags
                          • Ungelesen 0
                          • Kategorien
                          • Unreplied
                          • Beliebt
                          • GitHub
                          • Docu
                          • Hilfe