NEWS
[gelöst] Json mit Sub-Arrays unbekannter Anzahl zerlegen
-
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
-
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]) } } });
-
Damit bekommst du die Länge des arrays heraus.
Ansonsten so wie man eine Schleife darüber laufen lassenlog(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 -
@oliverio Es ist kein Array, sondern ein Objekt, da funktioniert
length
nicht. -
Herzlichen Dank für die schnelle Hilfe,
funktioniert perfekt! -
@ralf-8 Habs nochmal angepasst für die Anzahl -> count
-
-
@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.