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. ioBroker Allgemein
  4. JSON interpretieren

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    14
    1
    436

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    614

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    1.8k

JSON interpretieren

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
17 Beiträge 4 Kommentatoren 897 Aufrufe 2 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.
  • 1 Offline
    1 Offline
    150d
    schrieb am zuletzt editiert von 150d
    #1

    Hallo zusammen,

    ich schreibe gerade an einem Adapter, der eine Web-API abfragt und ein JSON zurückbekommt. Dieses zu interpretieren gelingt mir jetzt nicht:

    adapter.log.info("parse JSON: " + JSON.stringify(json));

    ergibt:

    parse JSON: {"overview":{"lastUpdateTime":"2023-07-21 17:03:35","lifeTimeData":{"energy":860933},"lastYearData":{"energy":319056},"lastMonthData":{"energy":319056},"lastDayData":{"energy":24741},"currentPower":{"power":2135},"measuredBy":"INVERTER"}}

    -> fein.

    Aber wie greife ich darauf jetzt zu?

    data = JSON.parse(json);

    ergibt:

    Unexpected token o in JSON at position 1

    -> Verstehe ich nicht. In dem JSON gibt es doch gar kein Token namens "o"?

    Kann mir jemand sagen, was ich hier falsch mache?

    MfG

    PS: Ja, ich hätte auch gedacht, daß dieser Post in "Entwicklung" besser aufgehoben wäre. Aber dort habe ich kein Schreibrecht, und dies zu bekommen scheint nicht ganz trivial zu sein. Falls sich jemand berufen fühlt, mir hier beizustehen, so sei mir dieser willkommen! :-)

    mickymM 1 Antwort Letzte Antwort
    0
    • 1 150d

      Hallo zusammen,

      ich schreibe gerade an einem Adapter, der eine Web-API abfragt und ein JSON zurückbekommt. Dieses zu interpretieren gelingt mir jetzt nicht:

      adapter.log.info("parse JSON: " + JSON.stringify(json));

      ergibt:

      parse JSON: {"overview":{"lastUpdateTime":"2023-07-21 17:03:35","lifeTimeData":{"energy":860933},"lastYearData":{"energy":319056},"lastMonthData":{"energy":319056},"lastDayData":{"energy":24741},"currentPower":{"power":2135},"measuredBy":"INVERTER"}}

      -> fein.

      Aber wie greife ich darauf jetzt zu?

      data = JSON.parse(json);

      ergibt:

      Unexpected token o in JSON at position 1

      -> Verstehe ich nicht. In dem JSON gibt es doch gar kein Token namens "o"?

      Kann mir jemand sagen, was ich hier falsch mache?

      MfG

      PS: Ja, ich hätte auch gedacht, daß dieser Post in "Entwicklung" besser aufgehoben wäre. Aber dort habe ich kein Schreibrecht, und dies zu bekommen scheint nicht ganz trivial zu sein. Falls sich jemand berufen fühlt, mir hier beizustehen, so sei mir dieser willkommen! :-)

      mickymM Offline
      mickymM Offline
      mickym
      Most Active
      schrieb am zuletzt editiert von mickym
      #2

      @150d Was soll das Ganze mit dem parse JSON

      das ist doch kein valider JSON:

      parse JSON: {"overview":{"lastUpdateTime":"2023-07-21 17:03:35","lifeTimeData":{"energy":860933},"lastYearData":{"energy":319056},"lastMonthData":{"energy":319056},"lastDayData":{"energy":24741},"currentPower":{"power":2135},"measuredBy":"INVERTER"}}
      

      ohne das Zeugs vornedran ist es doch in Ordnung:

      {"overview":{"lastUpdateTime":"2023-07-21 17:03:35","lifeTimeData":{"energy":860933},"lastYearData":{"energy":319056},"lastMonthData":{"energy":319056},"lastDayData":{"energy":24741},"currentPower":{"power":2135},"measuredBy":"INVERTER"}}
      

      Daraus kann man dann ein Objekt machen und auf die Eigenschaften zugreifen - aber das parse JSON vorne dran machst Du alles kaputt. Wenn das vorher bereits ein JSON war - dann braucht man das auch nicht "stringifizieren".

      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

      1 1 Antwort Letzte Antwort
      0
      • mickymM mickym

        @150d Was soll das Ganze mit dem parse JSON

        das ist doch kein valider JSON:

        parse JSON: {"overview":{"lastUpdateTime":"2023-07-21 17:03:35","lifeTimeData":{"energy":860933},"lastYearData":{"energy":319056},"lastMonthData":{"energy":319056},"lastDayData":{"energy":24741},"currentPower":{"power":2135},"measuredBy":"INVERTER"}}
        

        ohne das Zeugs vornedran ist es doch in Ordnung:

        {"overview":{"lastUpdateTime":"2023-07-21 17:03:35","lifeTimeData":{"energy":860933},"lastYearData":{"energy":319056},"lastMonthData":{"energy":319056},"lastDayData":{"energy":24741},"currentPower":{"power":2135},"measuredBy":"INVERTER"}}
        

        Daraus kann man dann ein Objekt machen und auf die Eigenschaften zugreifen - aber das parse JSON vorne dran machst Du alles kaputt. Wenn das vorher bereits ein JSON war - dann braucht man das auch nicht "stringifizieren".

        1 Offline
        1 Offline
        150d
        schrieb am zuletzt editiert von
        #3

        @mickym Das ist doch nur der Prefix für die Log-Ausgabe. Die Variable "json" beginnt mit "{".

        mickymM 1 Antwort Letzte Antwort
        0
        • 1 150d

          @mickym Das ist doch nur der Prefix für die Log-Ausgabe. Die Variable "json" beginnt mit "{".

          mickymM Offline
          mickymM Offline
          mickym
          Most Active
          schrieb am zuletzt editiert von mickym
          #4

          @150d Wo ist das Problem?

          let str = '{"overview":{"lastUpdateTime":"2023-07-21 17:03:35","lifeTimeData":{"energy":860933},"lastYearData":{"energy":319056},"lastMonthData":{"energy":319056},"lastDayData":{"energy":24741},"currentPower":{"power":2135},"measuredBy":"INVERTER"}}';
          
           
          var wert= JSON.parse(str).overview.lastUpdateTime;
          console.log(wert);
          

          Ich kann also auf jede Eigenschaft zugreifen.

          3f6a53ba-6a2c-4024-932a-ce8a9e880d33-image.png

          Das Ganze Objekt ist nur das Parsen des Strings.

          45687306-829a-42cf-b600-dcd21ff1f707-image.png

          Aus Deinem Code geht nicht hervor was in json drin steht -

          Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

          1 1 Antwort Letzte Antwort
          0
          • mickymM mickym

            @150d Wo ist das Problem?

            let str = '{"overview":{"lastUpdateTime":"2023-07-21 17:03:35","lifeTimeData":{"energy":860933},"lastYearData":{"energy":319056},"lastMonthData":{"energy":319056},"lastDayData":{"energy":24741},"currentPower":{"power":2135},"measuredBy":"INVERTER"}}';
            
             
            var wert= JSON.parse(str).overview.lastUpdateTime;
            console.log(wert);
            

            Ich kann also auf jede Eigenschaft zugreifen.

            3f6a53ba-6a2c-4024-932a-ce8a9e880d33-image.png

            Das Ganze Objekt ist nur das Parsen des Strings.

            45687306-829a-42cf-b600-dcd21ff1f707-image.png

            Aus Deinem Code geht nicht hervor was in json drin steht -

            1 Offline
            1 Offline
            150d
            schrieb am zuletzt editiert von
            #5

            @mickym Ich verstehe nicht, warum

            data = JSON.parse(json);

            nicht funktioniert. Das sollte mir doch ein JavScript-Objekt mit den JSON-Inhalten zurückgeben, nicht?

            mickymM paul53P 2 Antworten Letzte Antwort
            0
            • 1 150d

              @mickym Ich verstehe nicht, warum

              data = JSON.parse(json);

              nicht funktioniert. Das sollte mir doch ein JavScript-Objekt mit den JSON-Inhalten zurückgeben, nicht?

              mickymM Offline
              mickymM Offline
              mickym
              Most Active
              schrieb am zuletzt editiert von mickym
              #6

              @150d Ja tuts ja - Nenn mal Deine Variable nicht json sondern str oder irgendwas. - Du siehst doch dass ich mit Deinem JSON string kein Problem habe. Der String muss in "Hochkommas"

              Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

              1 Antwort Letzte Antwort
              0
              • 1 150d

                @mickym Ich verstehe nicht, warum

                data = JSON.parse(json);

                nicht funktioniert. Das sollte mir doch ein JavScript-Objekt mit den JSON-Inhalten zurückgeben, nicht?

                paul53P Offline
                paul53P Offline
                paul53
                schrieb am zuletzt editiert von
                #7

                @150d sagte: warum
                data = JSON.parse(json);
                nicht funktioniert.

                Ist das vermeintliche JSON vielleicht kein JSON, sondern bereits ein Objekt?

                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                mickymM 1 Antwort Letzte Antwort
                0
                • paul53P paul53

                  @150d sagte: warum
                  data = JSON.parse(json);
                  nicht funktioniert.

                  Ist das vermeintliche JSON vielleicht kein JSON, sondern bereits ein Objekt?

                  mickymM Offline
                  mickymM Offline
                  mickym
                  Most Active
                  schrieb am zuletzt editiert von
                  #8

                  @paul53 sagte in JSON interpretieren:

                  @150d sagte: warum
                  data = JSON.parse(json);
                  nicht funktioniert.

                  Ist das vermeintliche JSON vielleicht kein JSON, sondern bereits ein Objekt?

                  Ja das kann SEIN, weil sonst würde er es oben ja nicht stringifizieren.

                  Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                  1 1 Antwort Letzte Antwort
                  0
                  • mickymM mickym

                    @paul53 sagte in JSON interpretieren:

                    @150d sagte: warum
                    data = JSON.parse(json);
                    nicht funktioniert.

                    Ist das vermeintliche JSON vielleicht kein JSON, sondern bereits ein Objekt?

                    Ja das kann SEIN, weil sonst würde er es oben ja nicht stringifizieren.

                    1 Offline
                    1 Offline
                    150d
                    schrieb am zuletzt editiert von 150d
                    #9

                    In der Tat, das funktioniert. (Ich bin neu hier - bei JavaScript -; ich weiß noch nicht so genau, was ich tue... :-) )

                    Was ich möchte:

                    Der JSON-String soll rekursiv geparst werden und aus dem Inhalt ioBroker-States angelegt werden. Folgendes habe ich versucht:

                    function parse_json_data(jsondata) {
                    
                    	for (var substr in jsondata) {
                    		
                    		if (typeof substr === "object") {
                    			return parse_json_data(substr);
                    		} else {
                    			adapter.log.info("substring: " + substr);
                    		}
                    		
                    	}
                    
                    }
                    
                    

                    Das klappt aber nicht, es wird nur der eine Eintrag "overview" erkannt. Die Rekursion funktioniert nicht.

                    Wie kann ich zwischen "Knoten" und "Blatt" unterscheiden?

                    mickymM paul53P 2 Antworten Letzte Antwort
                    0
                    • 1 150d

                      In der Tat, das funktioniert. (Ich bin neu hier - bei JavaScript -; ich weiß noch nicht so genau, was ich tue... :-) )

                      Was ich möchte:

                      Der JSON-String soll rekursiv geparst werden und aus dem Inhalt ioBroker-States angelegt werden. Folgendes habe ich versucht:

                      function parse_json_data(jsondata) {
                      
                      	for (var substr in jsondata) {
                      		
                      		if (typeof substr === "object") {
                      			return parse_json_data(substr);
                      		} else {
                      			adapter.log.info("substring: " + substr);
                      		}
                      		
                      	}
                      
                      }
                      
                      

                      Das klappt aber nicht, es wird nur der eine Eintrag "overview" erkannt. Die Rekursion funktioniert nicht.

                      Wie kann ich zwischen "Knoten" und "Blatt" unterscheiden?

                      mickymM Offline
                      mickymM Offline
                      mickym
                      Most Active
                      schrieb am zuletzt editiert von mickym
                      #10

                      gelöscht - du hast ja for in genutzt, aber substr ist der Key und nicht das Objekt.

                      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                      1 1 Antwort Letzte Antwort
                      0
                      • mickymM mickym

                        gelöscht - du hast ja for in genutzt, aber substr ist der Key und nicht das Objekt.

                        1 Offline
                        1 Offline
                        150d
                        schrieb am zuletzt editiert von 150d
                        #11

                        (delete - checking... :-) )

                        mickymM OliverIOO 2 Antworten Letzte Antwort
                        0
                        • 1 150d

                          (delete - checking... :-) )

                          mickymM Offline
                          mickymM Offline
                          mickym
                          Most Active
                          schrieb am zuletzt editiert von mickym
                          #12

                          @150d

                          if (typeof jsondata[substr] === "object"){
                          			return parse_json_data(jsondata[substr] );
                          		}
                          

                          In substr ist der key - als der Eigenschaftsname des Wertes innerhalb des Objektes. Wenn die Eigenschaft wieder auf Objekt abprüfst, musst Du das über das Objekt referenzieren.

                          Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                          1 Antwort Letzte Antwort
                          0
                          • 1 150d

                            In der Tat, das funktioniert. (Ich bin neu hier - bei JavaScript -; ich weiß noch nicht so genau, was ich tue... :-) )

                            Was ich möchte:

                            Der JSON-String soll rekursiv geparst werden und aus dem Inhalt ioBroker-States angelegt werden. Folgendes habe ich versucht:

                            function parse_json_data(jsondata) {
                            
                            	for (var substr in jsondata) {
                            		
                            		if (typeof substr === "object") {
                            			return parse_json_data(substr);
                            		} else {
                            			adapter.log.info("substring: " + substr);
                            		}
                            		
                            	}
                            
                            }
                            
                            

                            Das klappt aber nicht, es wird nur der eine Eintrag "overview" erkannt. Die Rekursion funktioniert nicht.

                            Wie kann ich zwischen "Knoten" und "Blatt" unterscheiden?

                            paul53P Offline
                            paul53P Offline
                            paul53
                            schrieb am zuletzt editiert von paul53
                            #13

                            @150d sagte: Der JSON-String soll rekursiv geparst werden und aus dem Inhalt ioBroker-States angelegt werden.

                            Das macht man nicht mit dem JSON, sondern mit dem Objekt. Beispiel:

                            const path = '0_userdata.0.inverter';
                            const myobj = {"overview":{"lastUpdateTime":"2023-07-21 17:03:35","lifeTimeData":{"energy":860933},"lastYearData":{"energy":319056},"lastMonthData":{"energy":319056},"lastDayData":{"energy":24741},"currentPower":{"power":2135},"measuredBy":"INVERTER"}};
                            
                            function iter(id, obj) {
                              for(let prop in obj) {
                                  if(typeof obj[prop] == 'object') iter(id + '.' + prop, obj[prop]);
                                  else {
                                    let idDp = id + '.' + prop;
                                    log(idDp + ': ' + obj[prop]);
                                    // if(existsState(idDp)) setState(idDp, obj[prop]);
                                    // else createState(idDp, obj[prop]);
                                  }  
                              }
                            }
                             
                            iter(path, myobj);
                            

                            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                            Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                            1 Antwort Letzte Antwort
                            0
                            • 1 150d

                              (delete - checking... :-) )

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

                              @150d

                              du kannst das mal probieren

                              function iterate(obj, stack) {
                                      for (var property in obj) {
                                          if (obj.hasOwnProperty(property)) {
                                              if (typeof obj[property] == "object") {
                                                  iterate(obj[property], stack + '.' + property);
                                              } else {
                                                  console.log(property + "   " + obj[property]);
                                              }
                                          }
                                      }
                                  }
                              
                              iterate(object, '')
                              
                              

                              https://stackoverflow.com/questions/15690706/recursively-looping-through-an-object-to-build-a-property-list

                              ich sehe ich gerade, das die stackvariable irgendwie nirgends zugewiesen wird, eigentlich sollte die dafür da sein, um den propertypfad mit auszugeben.

                              Nachtrag, das war Paul schneller
                              Evtl musst du auch noch Sonderbehandlung für Array und den anderen primitivtypen einbauen

                              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 1 Antwort Letzte Antwort
                              0
                              • OliverIOO OliverIO

                                @150d

                                du kannst das mal probieren

                                function iterate(obj, stack) {
                                        for (var property in obj) {
                                            if (obj.hasOwnProperty(property)) {
                                                if (typeof obj[property] == "object") {
                                                    iterate(obj[property], stack + '.' + property);
                                                } else {
                                                    console.log(property + "   " + obj[property]);
                                                }
                                            }
                                        }
                                    }
                                
                                iterate(object, '')
                                
                                

                                https://stackoverflow.com/questions/15690706/recursively-looping-through-an-object-to-build-a-property-list

                                ich sehe ich gerade, das die stackvariable irgendwie nirgends zugewiesen wird, eigentlich sollte die dafür da sein, um den propertypfad mit auszugeben.

                                Nachtrag, das war Paul schneller
                                Evtl musst du auch noch Sonderbehandlung für Array und den anderen primitivtypen einbauen

                                1 Offline
                                1 Offline
                                150d
                                schrieb am zuletzt editiert von 150d
                                #15

                                Ok, bin weitergekommen. Die Rekursion funktioniert jetzt "nach unten", aber sie "kommt nicht wieder hoch":

                                Nochmal zur Erinnerung das JSON, "prettified":

                                {
                                	"overview":{
                                		"lastUpdateTime":"2023-07-21 18:41:46",
                                		"lifeTimeData":{
                                			"energy":863588
                                		},
                                		"lastYearData":{
                                			"energy":321711
                                		},
                                		"lastMonthData":{
                                			"energy":321711
                                		},
                                		"lastDayData":{
                                			"energy":27396
                                		},
                                		"currentPower":{
                                			"power":1152
                                		},
                                		"measuredBy":"INVERTER"
                                	}
                                }
                                

                                Und hier der Code, den ich bis jetzt habe:

                                function parse_json_data(jsondata, prefix) {
                                	
                                	for (var substr in jsondata) {
                                		
                                		if (typeof jsondata[substr] === "object") {
                                			
                                			// found object, do recursion:
                                			
                                			return parse_json_data(jsondata[substr], prefix + substr + ".");
                                
                                		} else {
                                			
                                			// not an object, print key/value pair:
                                			
                                			adapter.log.info("JSON key/value: " + prefix + substr + " = " + jsondata[substr]);
                                				
                                		}
                                	}
                                }
                                
                                

                                Dies produziert folgende Ausgabe:

                                	JSON key/value: overview.lastUpdateTime = 2023-07-21 18:41:46
                                	JSON key/value: overview.lifeTimeData.energy = 863588
                                
                                

                                ... es wird also:

                                • das erste Objekt identifiziert (overview),
                                • darin ein key/value gefunden (lastUpdateTime),
                                • dann wieder ein Objekt (lifeTimeData),
                                • darin ein key/value (energy).

                                Aber dann ist Schluss, weitere Behandlung findet nicht mehr statt.

                                Warum geht die for-Schleife nicht zum nächsten item (lastYearData) weiter?

                                paul53P 1 Antwort Letzte Antwort
                                0
                                • 1 150d

                                  Ok, bin weitergekommen. Die Rekursion funktioniert jetzt "nach unten", aber sie "kommt nicht wieder hoch":

                                  Nochmal zur Erinnerung das JSON, "prettified":

                                  {
                                  	"overview":{
                                  		"lastUpdateTime":"2023-07-21 18:41:46",
                                  		"lifeTimeData":{
                                  			"energy":863588
                                  		},
                                  		"lastYearData":{
                                  			"energy":321711
                                  		},
                                  		"lastMonthData":{
                                  			"energy":321711
                                  		},
                                  		"lastDayData":{
                                  			"energy":27396
                                  		},
                                  		"currentPower":{
                                  			"power":1152
                                  		},
                                  		"measuredBy":"INVERTER"
                                  	}
                                  }
                                  

                                  Und hier der Code, den ich bis jetzt habe:

                                  function parse_json_data(jsondata, prefix) {
                                  	
                                  	for (var substr in jsondata) {
                                  		
                                  		if (typeof jsondata[substr] === "object") {
                                  			
                                  			// found object, do recursion:
                                  			
                                  			return parse_json_data(jsondata[substr], prefix + substr + ".");
                                  
                                  		} else {
                                  			
                                  			// not an object, print key/value pair:
                                  			
                                  			adapter.log.info("JSON key/value: " + prefix + substr + " = " + jsondata[substr]);
                                  				
                                  		}
                                  	}
                                  }
                                  
                                  

                                  Dies produziert folgende Ausgabe:

                                  	JSON key/value: overview.lastUpdateTime = 2023-07-21 18:41:46
                                  	JSON key/value: overview.lifeTimeData.energy = 863588
                                  
                                  

                                  ... es wird also:

                                  • das erste Objekt identifiziert (overview),
                                  • darin ein key/value gefunden (lastUpdateTime),
                                  • dann wieder ein Objekt (lifeTimeData),
                                  • darin ein key/value (energy).

                                  Aber dann ist Schluss, weitere Behandlung findet nicht mehr statt.

                                  Warum geht die for-Schleife nicht zum nächsten item (lastYearData) weiter?

                                  paul53P Offline
                                  paul53P Offline
                                  paul53
                                  schrieb am zuletzt editiert von paul53
                                  #16

                                  @150d
                                  Bei meinem Vorschlag kommt das im Log:

                                  19:08:57.895	info	javascript.1 (2174) script.js.common.ObjectStruct2ID: 0_userdata.0.inverter.overview.lastUpdateTime: 2023-07-21 17:03:35
                                  19:08:57.895	info	javascript.1 (2174) script.js.common.ObjectStruct2ID: 0_userdata.0.inverter.overview.lifeTimeData.energy: 860933
                                  19:08:57.895	info	javascript.1 (2174) script.js.common.ObjectStruct2ID: 0_userdata.0.inverter.overview.lastYearData.energy: 319056
                                  19:08:57.895	info	javascript.1 (2174) script.js.common.ObjectStruct2ID: 0_userdata.0.inverter.overview.lastMonthData.energy: 319056
                                  19:08:57.895	info	javascript.1 (2174) script.js.common.ObjectStruct2ID: 0_userdata.0.inverter.overview.lastDayData.energy: 24741
                                  19:08:57.895	info	javascript.1 (2174) script.js.common.ObjectStruct2ID: 0_userdata.0.inverter.overview.currentPower.power: 2135
                                  19:08:57.896	info	javascript.1 (2174) script.js.common.ObjectStruct2ID: 0_userdata.0.inverter.overview.measuredBy: INVERTER
                                  

                                  Das return in Zeile 9 verhindert die weitere Iteration.

                                  Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                  Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                  1 1 Antwort Letzte Antwort
                                  0
                                  • paul53P paul53

                                    @150d
                                    Bei meinem Vorschlag kommt das im Log:

                                    19:08:57.895	info	javascript.1 (2174) script.js.common.ObjectStruct2ID: 0_userdata.0.inverter.overview.lastUpdateTime: 2023-07-21 17:03:35
                                    19:08:57.895	info	javascript.1 (2174) script.js.common.ObjectStruct2ID: 0_userdata.0.inverter.overview.lifeTimeData.energy: 860933
                                    19:08:57.895	info	javascript.1 (2174) script.js.common.ObjectStruct2ID: 0_userdata.0.inverter.overview.lastYearData.energy: 319056
                                    19:08:57.895	info	javascript.1 (2174) script.js.common.ObjectStruct2ID: 0_userdata.0.inverter.overview.lastMonthData.energy: 319056
                                    19:08:57.895	info	javascript.1 (2174) script.js.common.ObjectStruct2ID: 0_userdata.0.inverter.overview.lastDayData.energy: 24741
                                    19:08:57.895	info	javascript.1 (2174) script.js.common.ObjectStruct2ID: 0_userdata.0.inverter.overview.currentPower.power: 2135
                                    19:08:57.896	info	javascript.1 (2174) script.js.common.ObjectStruct2ID: 0_userdata.0.inverter.overview.measuredBy: INVERTER
                                    

                                    Das return in Zeile 9 verhindert die weitere Iteration.

                                    1 Offline
                                    1 Offline
                                    150d
                                    schrieb am zuletzt editiert von
                                    #17

                                    @paul53 said in JSON interpretieren:

                                    Das return in Zeile 9 verhindert die weitere Iteration.

                                    Jawohl, das war es. (Dieses JavaScript ist vielleicht krümelkackerisch... :-) )

                                    Danke!

                                    Und danke an alle beteiligten!

                                    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
                                    FAQ Cloud / IOT
                                    HowTo: Node.js-Update
                                    HowTo: Backup/Restore
                                    Downloads
                                    BLOG

                                    500

                                    Online

                                    32.6k

                                    Benutzer

                                    81.9k

                                    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