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. JavaScript
  5. [gelöst] Json mit Sub-Arrays unbekannter Anzahl zerlegen

NEWS

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.0k

[gelöst] Json mit Sub-Arrays unbekannter Anzahl zerlegen

Geplant Angeheftet Gesperrt Verschoben JavaScript
8 Beiträge 3 Kommentatoren 470 Aufrufe 3 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.
  • R Offline
    R Offline
    Ralf 8
    schrieb am zuletzt editiert von Ralf 8
    #1

    Hallo,
    ich versuche einen JSON mit Sub-Arrays wieder einzulesen.
    Der JSON wird einmal täglich mit Energiedaten meiner Balkon-Solar gespeichert
    und sieht so aus:

    {
      "zaehlerstand": 1000,
      "total_act_power": 500,
      "total_aprt_power": 300,
      "delta-2-max-offline": {
        "0": "12:04",
        "1": "13:45",
        "2": "16:35",
      }
    }
    

    Immer wenn meine Anlage mal wieder offline geht, möchte ich das Loggen.
    Daher sind unter delta-2-max-offline eine variable Anzahl von Daten oder auch keine.

    Wie kann ich diesen JSON aber wieder lesen ohne zu wissen, wie viele Sub-Daten 0,1...x enthalten sind?

    So komme ich an die Daten heran, habe als Test aber fest den Wert von 0 abgefragt.

    let obj = JSON.parse(getState(id).val);
    Object.keys(obj).forEach(function(item) {
        //  id=Datenpunkt, item=Bezeichner (key)   obj[item]=Value
        if (item == 'delta-2-max-offline') {
        log(id);
        log(item); 
        log(obj[item][0]);
        }
    });
    

    Leider weiß ich aber nicht, ob und wie viele Werte vorhanden sind (in meinem Beispiel oben 0,1,2.

    Schön wäre auch wenn ich die if-Abfrage auch weglassen könnte.
    Ein allgemein funktionierendes Code-Schnipsel für verschachtelte JSON`s wäre toll,
    habe ich aber trotz intensivem Suchen nicht gefunden (oder eher nach den falschen Schlüsselworten gesucht).

    Vielen Dank

    OliverIOO 1 Antwort Letzte Antwort
    0
    • M Online
      M Online
      MCU
      schrieb am zuletzt editiert von MCU
      #2

      @ralf-8

      let obj = JSON.parse(getState(id).val);
      Object.keys(obj).forEach(function(item) {
          //  id=Datenpunkt, item=Bezeichner (key)   obj[item]=Value
          log(item)
          if (typeof obj[item] == 'object') {
              let value = obj[item]
             let count = Object.keys(value).length;
              log(count)
             for(let key in value){
                 log(key)
                 log(value[key])
             }
          }
      });
      

      NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
      Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

      1 Antwort Letzte Antwort
      0
      • R Ralf 8

        Hallo,
        ich versuche einen JSON mit Sub-Arrays wieder einzulesen.
        Der JSON wird einmal täglich mit Energiedaten meiner Balkon-Solar gespeichert
        und sieht so aus:

        {
          "zaehlerstand": 1000,
          "total_act_power": 500,
          "total_aprt_power": 300,
          "delta-2-max-offline": {
            "0": "12:04",
            "1": "13:45",
            "2": "16:35",
          }
        }
        

        Immer wenn meine Anlage mal wieder offline geht, möchte ich das Loggen.
        Daher sind unter delta-2-max-offline eine variable Anzahl von Daten oder auch keine.

        Wie kann ich diesen JSON aber wieder lesen ohne zu wissen, wie viele Sub-Daten 0,1...x enthalten sind?

        So komme ich an die Daten heran, habe als Test aber fest den Wert von 0 abgefragt.

        let obj = JSON.parse(getState(id).val);
        Object.keys(obj).forEach(function(item) {
            //  id=Datenpunkt, item=Bezeichner (key)   obj[item]=Value
            if (item == 'delta-2-max-offline') {
            log(id);
            log(item); 
            log(obj[item][0]);
            }
        });
        

        Leider weiß ich aber nicht, ob und wie viele Werte vorhanden sind (in meinem Beispiel oben 0,1,2.

        Schön wäre auch wenn ich die if-Abfrage auch weglassen könnte.
        Ein allgemein funktionierendes Code-Schnipsel für verschachtelte JSON`s wäre toll,
        habe ich aber trotz intensivem Suchen nicht gefunden (oder eher nach den falschen Schlüsselworten gesucht).

        Vielen Dank

        OliverIOO Offline
        OliverIOO Offline
        OliverIO
        schrieb am zuletzt editiert von OliverIO
        #3

        @ralf-8

        Damit bekommst du die Länge des arrays heraus.
        Ansonsten so wie man eine Schleife darüber laufen lassen

        log(obj[item].length);
        log(obj.item.length);
        

        Alternativ hier die ganzen Funktionen was man mit arrays noch machen kann
        https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array

        Meine Adapter und Widgets
        TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
        Links im Profil

        M 1 Antwort Letzte Antwort
        0
        • OliverIOO OliverIO

          @ralf-8

          Damit bekommst du die Länge des arrays heraus.
          Ansonsten so wie man eine Schleife darüber laufen lassen

          log(obj[item].length);
          log(obj.item.length);
          

          Alternativ hier die ganzen Funktionen was man mit arrays noch machen kann
          https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array

          M Online
          M Online
          MCU
          schrieb am zuletzt editiert von
          #4

          @oliverio Es ist kein Array, sondern ein Objekt, da funktioniert length nicht.

          NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
          Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

          R OliverIOO 2 Antworten Letzte Antwort
          0
          • M MCU

            @oliverio Es ist kein Array, sondern ein Objekt, da funktioniert length nicht.

            R Offline
            R Offline
            Ralf 8
            schrieb am zuletzt editiert von
            #5

            @mcu

            Herzlichen Dank für die schnelle Hilfe,
            funktioniert perfekt!

            M 1 Antwort Letzte Antwort
            0
            • R Ralf 8

              @mcu

              Herzlichen Dank für die schnelle Hilfe,
              funktioniert perfekt!

              M Online
              M Online
              MCU
              schrieb am zuletzt editiert von
              #6

              @ralf-8 Habs nochmal angepasst für die Anzahl -> count

              NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
              Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

              R 1 Antwort Letzte Antwort
              0
              • M MCU

                @ralf-8 Habs nochmal angepasst für die Anzahl -> count

                R Offline
                R Offline
                Ralf 8
                schrieb am zuletzt editiert von
                #7

                @mcu :blush:

                1 Antwort Letzte Antwort
                0
                • M MCU

                  @oliverio Es ist kein Array, sondern ein Objekt, da funktioniert length nicht.

                  OliverIOO Offline
                  OliverIOO Offline
                  OliverIO
                  schrieb am zuletzt editiert von
                  #8

                  @mcu sagte in [gelöst] Json mit Sub-Arrays unbekannter Anzahl zerlegen:

                  @oliverio Es ist kein Array, sondern ein Objekt, da funktioniert length nicht.

                  Oh stimmt, ich hab nur den Index gesehen.

                  Meine Adapter und Widgets
                  TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                  Links im Profil

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


                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  804

                  Online

                  32.4k

                  Benutzer

                  81.5k

                  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