Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [gelöst] Json mit Sub-Arrays unbekannter Anzahl zerlegen

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

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

    This topic has been deleted. Only users with topic management privileges can see it.
    • R
      Ralf 8 last edited by 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

      OliverIO 1 Reply Last reply Reply Quote 0
      • M
        MCU last edited by MCU

        @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])
               }
            }
        });
        
        1 Reply Last reply Reply Quote 0
        • OliverIO
          OliverIO @Ralf 8 last edited by 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 1 Reply Last reply Reply Quote 0
          • M
            MCU @OliverIO last edited by

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

            R OliverIO 2 Replies Last reply Reply Quote 0
            • R
              Ralf 8 @MCU last edited by

              @mcu

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

              M 1 Reply Last reply Reply Quote 0
              • M
                MCU @Ralf 8 last edited by

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

                R 1 Reply Last reply Reply Quote 0
                • R
                  Ralf 8 @MCU last edited by

                  @mcu 😊

                  1 Reply Last reply Reply Quote 0
                  • OliverIO
                    OliverIO @MCU last edited by

                    @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.

                    1 Reply Last reply Reply Quote 0
                    • First post
                      Last post

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    681
                    Online

                    31.8k
                    Users

                    80.0k
                    Topics

                    1.3m
                    Posts

                    3
                    8
                    264
                    Loading More Posts
                    • Oldest to Newest
                    • Newest to Oldest
                    • Most Votes
                    Reply
                    • Reply as topic
                    Log in to reply
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                    The ioBroker Community 2014-2023
                    logo