NEWS
[gelöst] Brauche hilfe json Array verschachtelung zu parsen
-
Moin Freunde,
ich brauche dringend Hilfe, ich werde sonst bekloppt, muss dazu aber sagen, ich hab keine ahnung von dem was ich da mache!
Ich möchte meine Netatmo Heizkörperthermostate in ioBroker einbinden, der vorhandene Adapter unterstützt leider die Thermostate nicht, so baue ich mir was in Blockly zusammen…
Dies möchte ich direkt Ready to use für jedermann erstellen, bin auch soweit das Objekte automatisch angelegt werden wenn nicht vorhanden und hier nur Zugangsdaten in Objekte eingetragen werden müssen und automatisch oauth2 Tokens angefordert und aktualisiert werden, womit dann bereits zwei JSON Objekte aus der API geholt und angelegt werden.
Zum einen wird schon seit Jahren nach einem Adapter von x Personen gebeten und zum anderen lerne ich so eine Menge dazu!Hier mein Problem, das json objekt aus der API, ist mit einigen Arrays verschachtelt und ich weiß wirklich nicht wie ich dieses parsen muss, ich denke die lösung ist sehr einfach…
Hier die struktur: (ein beispiel){ body: { homes: [ { id: "5954e7f249c75f97428b7b23" name: "Your House" altitude: 89 coordinates: [ "-0.12726409999999996, 51.51608619999999" ] country: "FR"timezone: "Europe/paris"rooms: [ { id: 3466299980 name: "myRoom" type: "Kitchen" module_ids: [ "09:00:00:00:0e:e0" ] } ] modules: [ { id: "01:00:00:00:0e:e0" type: "NAPlug" name: "thermostat relay" setup_date: 1498736626 module_bridged: [ "02:00:00:00:0e:e0, 03:00:00:00:0e:e0" ] } { id: "01:00:00:00:0e:e0" type: "NATherm1" name: "thermostat relay" setup_date: 1498736626 room_id: 2016185224 bridge: "01:00:00:00:0e:e0" } { id: "01:00:00:00:0e:e0" type: "NRV" name: "thermostat relay" setup_date: 1498736626 room_id: 2016185224 bridge: "01:00:00:00:0e:e0" } ] therm_set_point_default_duration: 180 schedules: [ { timetable: [ { zone_id: 1m_offset: 360 } ] zones: [ { name: "Confort" id: 1type: 1 rooms: [ { id: 201618522 therm_setpoint_temperature: 15 } ] } ] name: "mySchedule" } ] therm_mode: "schedule" } ] user: { email: "user@example.com" langage: "fr-FR" locale: "fr-FR" feel_like_algorithm: 0 unit_pressure: 0 unit_system: 0 unit_wind: 0 id: "5c81004fd6e33f0b008b4df2" } } status: "ok" time_exec: "0.060059070587158" time_server: "1553777827" }
Wie komme ich zb an den wert „name“ im ersten homes array?
getAttr(getState("Objekt_ID").val, 'pfad');
Ich verwende den „Erhalte Attribut“ Baustein aus dem System Bereich, alle Versuche den Pfad anzugeben ergeben aber den wert „null“ also Attribut nicht gefunden nehme ich an…
Als nächstes würde ich dann gerne auf die Liste unter modules.module_bridged zugreifen und für jede der ID´s ein objekt mit dem „name“ anlegen, dazu müsste ich wissen, wie ich auf den wert „name“ für eine bestimmte ID zugreifen kann?
Danke für eure Hilfe, ich hoffe ich konnte das halbwegs verständlich erklären.
-
@newpicsel sagte in Brauche hilfe json Array verschachtelung zu parsen:
lle Versuche den Pfad anzugeben ergeben aber den wert „null“ also Attribut nicht gefunden nehme ich an…
und was steht im log?
wenn ich dein "json" im json-viewer ansehe kommt:
Invalid JSON variable
sieht nicht wie ein sauberes JSON aus
-
@homoran da fehlen alle Kommas. Die Attributauflistungen müssen alle mit Komma getrennt sein.
-
@homoran stimmt, mit dem richtigen json aus der api geht es im json-viewer...
Mein beispiel wird so auf deren homepage https://dev.netatmo.com/apidocumentation/energy#homesdata() angegeben, dachte es reicht um die struktur zu demonstrieren, die eigentliche json besteht aus vielen vertraulichen informationen...
Hättest du denn ein beispiel wie der pfad aussehen müsste? ich hab wie gesagt kaum ahnung davon und versuche wie: body.homes.name / body.homes[0].name oder einfach [0]name... keine ahnung hab wirklich alles getestet was mir eingefallen ist, der wert "name" ist normal hier zu finden:
{},{}body,[]homes,{}0,.name
ist das so verständlich?
wie muss der pfad für den "erhalte attribut" baustein aussehen? -
@newpicsel
Mein Vorschlag wäre: du kopierst das JSON,
öffnest den einen Browser (chrome,firefox oder den neuen Edge von MS)
öffnest darin dann die Developerkonsole (bei Chrome mit F12
gehst dann darin auf den Reiter Console
und kopierst das einfach in die Console und weist es einer Variable zu (im beispiel unten a) rein.
Danach zeigt es dir das erzeugte Objekt an und du kannst mit Hilfe slebst dich durch die Objektstruktur druchhangeln.
Hier mal ein Beispiel mit einem anderen JSON im Chrome Browser -
@newpicsel sagte in Brauche hilfe json Array verschachtelung zu parsen:
Wie komme ich zb an den wert „name“ im ersten homes array?
der pfad sollte
body.homes[0].name
sein -
@fastfoot said in Brauche hilfe json Array verschachtelung zu parsen:
der pfad sollte
body.homes[0].name
seinrichtig war auch meine vermutung bekomme aber immer "null" zurück obwohl in meinem fall "Home" im wert steht, und das mit jeden wert den ich abfrage außer den wert "status" innerhalb der ersten klammer noch vor {}body...
Hab auch versucht es mit json nach objekt zu konvertieren, ändert aber nichts. -
@newpicsel sagte in Brauche hilfe json Array verschachtelung zu parsen:
@fastfoot said in Brauche hilfe json Array verschachtelung zu parsen:
der pfad sollte
body.homes[0].name
seinrichtig war auch meine vermutung bekomme aber immer "null" zurück obwohl in meinem fall "Home" im wert steht, und das mit jeden wert den ich abfrage außer den wert "status" innerhalb der ersten klammer noch vor {}body...
Hab auch versucht es mit json nach objekt zu konvertieren, ändert aber nichts.tja, ohne konkrete Daten kann man da nichts machen
-
@fastfoot said in Brauche hilfe json Array verschachtelung zu parsen:
tja, ohne konkrete Daten kann man da nichts machen
und die wären? die tatsächliche json? wird nichts anderes zeigen denke ich, ich schick sie gleich mal...
-
@newpicsel sagte in Brauche hilfe json Array verschachtelung zu parsen:
@fastfoot said in Brauche hilfe json Array verschachtelung zu parsen:
tja, ohne konkrete Daten kann man da nichts machen
und die wären? die tatsächliche json? wird nichts anderes zeigen denke ich, ich schick sie gleich mal...
ja, die tatsächlichen Daten, persönliche Angaben kannst du ja verändern
-
so....
{ "body": { "homes": [ { "id": "xy", "name": "Home", "altitude": 8, "coordinates": [ xy, xy ], "country": "DE", "timezone": "Europe\/Berlin", "rooms": [ { "id": "xy", "name": "Schlafzimmer", "type": "bedroom", "module_ids": [ "xy" ] }, { "id": "xy", "name": "Kinderzimmer", "type": "custom", "module_ids": [ "xy" ] }, { "id": "xy", "name": "K\u00fcche", "type": "kitchen", "module_ids": [ "xy" ] }, { "id": "xy", "name": "Wohnzimmer", "type": "custom", "module_ids": [ "xy" ] }, { "id": "xy", "name": "Badezimmer", "type": "bathroom", "module_ids": [ "xy" ] } ], "modules": [ { "id": "xy", "type": "NAPlug", "name": "Relais", "setup_date": 1512123665, "modules_bridged": [ "xy", "xy", "xy", "xy", "xy" ] }, { "id": "xy", "type": "NRV", "name": "K\u00fcche", "setup_date": 1514020470, "room_id": "xy", "bridge": "xy" }, { "id": "xy", "type": "NRV", "name": "Badezimmer", "setup_date": 1514023382, "room_id": "xy", "bridge": "xy" }, { "id": "xy", "type": "NRV", "name": "Kinderzimmer", "setup_date": 1514032377, "room_id": "xy", "bridge": "xy" }, { "id": "xy", "type": "NRV", "name": "Schlafzimmer", "setup_date": 1512123670, "room_id": "xy", "bridge": "xy" }, { "id": "xy", "type": "NRV", "name": "Wohnzimmer", "setup_date": 1512123670, "room_id": "xy", "bridge": "xy" } ], "therm_schedules": [ { "timetable": [ { "zone_id": 1, "m_offset": 0 }, { "zone_id": 3, "m_offset": 180 }, { "zone_id": 1, "m_offset": 240 }, { "zone_id": 3, "m_offset": 300 }, { "zone_id": 9373, "m_offset": 360 }, { "zone_id": 0, "m_offset": 480 }, { "zone_id": 7690, "m_offset": 1200 }, { "zone_id": 6622, "m_offset": 1320 }, { "zone_id": 1, "m_offset": 1380 }, { "zone_id": 3, "m_offset": 1620 }, { "zone_id": 1, "m_offset": 1680 }, { "zone_id": 3, "m_offset": 1740 }, { "zone_id": 9373, "m_offset": 1800 }, { "zone_id": 0, "m_offset": 1920 }, { "zone_id": 7690, "m_offset": 2640 }, { "zone_id": 6622, "m_offset": 2760 }, { "zone_id": 1, "m_offset": 2820 }, { "zone_id": 3, "m_offset": 3060 }, { "zone_id": 1, "m_offset": 3120 }, { "zone_id": 3, "m_offset": 3180 }, { "zone_id": 9373, "m_offset": 3240 }, { "zone_id": 0, "m_offset": 3360 }, { "zone_id": 7690, "m_offset": 4080 }, { "zone_id": 6622, "m_offset": 4200 }, { "zone_id": 1, "m_offset": 4260 }, { "zone_id": 3, "m_offset": 4500 }, { "zone_id": 1, "m_offset": 4560 }, { "zone_id": 3, "m_offset": 4620 }, { "zone_id": 9373, "m_offset": 4680 }, { "zone_id": 0, "m_offset": 4800 }, { "zone_id": 7690, "m_offset": 5520 }, { "zone_id": 6622, "m_offset": 5640 }, { "zone_id": 1, "m_offset": 5700 }, { "zone_id": 3, "m_offset": 5940 }, { "zone_id": 1, "m_offset": 6000 }, { "zone_id": 3, "m_offset": 6060 }, { "zone_id": 9373, "m_offset": 6120 }, { "zone_id": 0, "m_offset": 6240 }, { "zone_id": 7690, "m_offset": 6960 }, { "zone_id": 6622, "m_offset": 7140 }, { "zone_id": 1, "m_offset": 7200 }, { "zone_id": 9373, "m_offset": 7620 }, { "zone_id": 3, "m_offset": 7680 }, { "zone_id": 0, "m_offset": 7740 }, { "zone_id": 7690, "m_offset": 8400 }, { "zone_id": 6622, "m_offset": 8580 }, { "zone_id": 1, "m_offset": 8640 }, { "zone_id": 9373, "m_offset": 9060 }, { "zone_id": 3, "m_offset": 9120 }, { "zone_id": 0, "m_offset": 9180 }, { "zone_id": 7690, "m_offset": 9840 }, { "zone_id": 6622, "m_offset": 9960 }, { "zone_id": 1, "m_offset": 10020 } ], "zones": [ { "name": "Komfort", "id": 0, "type": 0, "rooms_temp": [ { "room_id": "xy", "temp": 19 }, { "room_id": "xy", "temp": 20 }, { "room_id": "xy", "temp": 19 }, { "room_id": "xy", "temp": 18 }, { "room_id": "xy", "temp": 20 } ] }, { "name": "Nacht", "id": 1, "type": 1, "rooms_temp": [ { "room_id": "xy", "temp": 19 }, { "room_id": "xy", "temp": 20 }, { "room_id": "xy", "temp": 19 }, { "room_id": "xy", "temp": 17 }, { "room_id": "xy", "temp": 18 } ] }, { "name": "Eco", "id": 4, "type": 5, "rooms_temp": [ { "room_id": "xy", "temp": 18 }, { "room_id": "xy", "temp": 18 }, { "room_id": "xy", "temp": 18 }, { "room_id": "xy", "temp": 18 }, { "room_id": "xy", "temp": 18 } ] }, { "name": "Aufstehen", "id": 9373, "type": 4, "rooms_temp": [ { "room_id": "xy", "temp": 19 }, { "room_id": "xy", "temp": 20 }, { "room_id": "xy", "temp": 19 }, { "room_id": "xy", "temp": 19 }, { "room_id": "xy", "temp": 19 } ] }, { "name": "Schlafen", "id": 6622, "type": 4, "rooms_temp": [ { "room_id": "xy", "temp": 19 }, { "room_id": "xy", "temp": 20 }, { "room_id": "xy", "temp": 19 }, { "room_id": "xy", "temp": 20 }, { "room_id": "xy", "temp": 19 } ] }, { "name": "Schlarfzimmer Warm", "id": 7690, "type": 4, "rooms_temp": [ { "room_id": "xy", "temp": 19 }, { "room_id": "xy", "temp": 20 }, { "room_id": "xy", "temp": 19 }, { "room_id": "xy", "temp": 19 }, { "room_id": "xy", "temp": 19 } ] }, { "name": "Komfort+", "id": 3, "type": 8, "rooms_temp": [ { "room_id": "xy", "temp": 19 }, { "room_id": "xy", "temp": 20 }, { "room_id": "xy", "temp": 19 }, { "room_id": "xy", "temp": 19 }, { "room_id": "xy", "temp": 20 } ] } ], "name": "Winter", "default": false, "away_temp": 16, "hg_temp": 7, "id": "xy", "selected": true, "type": "therm" }, { "timetable": [ { "zone_id": 1, "m_offset": 0 }, { "zone_id": 0, "m_offset": 360 }, { "zone_id": 4, "m_offset": 480 }, { "zone_id": 0, "m_offset": 1020 }, { "zone_id": 1, "m_offset": 1320 }, { "zone_id": 0, "m_offset": 1800 }, { "zone_id": 4, "m_offset": 1920 }, { "zone_id": 0, "m_offset": 2460 }, { "zone_id": 1, "m_offset": 2760 }, { "zone_id": 0, "m_offset": 3240 }, { "zone_id": 4, "m_offset": 3360 }, { "zone_id": 0, "m_offset": 3900 }, { "zone_id": 1, "m_offset": 4200 }, { "zone_id": 0, "m_offset": 4680 }, { "zone_id": 4, "m_offset": 4800 }, { "zone_id": 0, "m_offset": 5340 }, { "zone_id": 1, "m_offset": 5640 }, { "zone_id": 0, "m_offset": 6120 }, { "zone_id": 4, "m_offset": 6240 }, { "zone_id": 3, "m_offset": 6660 }, { "zone_id": 0, "m_offset": 6960 }, { "zone_id": 1, "m_offset": 7140 }, { "zone_id": 0, "m_offset": 7620 }, { "zone_id": 3, "m_offset": 7740 }, { "zone_id": 0, "m_offset": 8400 }, { "zone_id": 1, "m_offset": 8580 }, { "zone_id": 0, "m_offset": 9060 }, { "zone_id": 3, "m_offset": 9180 }, { "zone_id": 0, "m_offset": 9840 }, { "zone_id": 1, "m_offset": 9960 } ], "zones": [ { "name": "", "id": 1, "type": 1, "rooms_temp": [ { "room_id": "xy", "temp": 16 }, { "room_id": "xy", "temp": 16 }, { "room_id": "xy", "temp": 16 }, { "room_id": "xy", "temp": 16 }, { "room_id": "xy", "temp": 16 } ] }, { "name": "Eco", "id": 4, "type": 5, "rooms_temp": [ { "room_id": "xy", "temp": 16 }, { "room_id": "xy", "temp": 16 }, { "room_id": "xy", "temp": 16 }, { "room_id": "xy", "temp": 16 }, { "room_id": "xy", "temp": 16 } ] }, { "name": "Komfort", "id": 0, "type": 0, "rooms_temp": [ { "room_id": "xy", "temp": 18 }, { "room_id": "xy", "temp": 18 }, { "room_id": "xy", "temp": 18 }, { "room_id": "xy", "temp": 18 }, { "room_id": "xy", "temp": 18 } ] }, { "name": "Komfort+", "id": 3, "type": 8, "rooms_temp": [ { "room_id": "xy", "temp": 18 }, { "room_id": "xy", "temp": 18 }, { "room_id": "xy", "temp": 18 }, { "room_id": "xy", "temp": 18 }, { "room_id": "xy", "temp": 18 } ] } ], "name": "Sommer", "default": false, "away_temp": 12, "hg_temp": 7, "id": "xy", "type": "therm" } ], "therm_mode": "schedule", "therm_setpoint_default_duration": 60, "schedules": [ { "timetable": [ { "zone_id": 1, "m_offset": 0 }, { "zone_id": 3, "m_offset": 180 }, { "zone_id": 1, "m_offset": 240 }, { "zone_id": 3, "m_offset": 300 }, { "zone_id": 9373, "m_offset": 360 }, { "zone_id": 0, "m_offset": 480 }, { "zone_id": 7690, "m_offset": 1200 }, { "zone_id": 6622, "m_offset": 1320 }, { "zone_id": 1, "m_offset": 1380 }, { "zone_id": 3, "m_offset": 1620 }, { "zone_id": 1, "m_offset": 1680 }, { "zone_id": 3, "m_offset": 1740 }, { "zone_id": 9373, "m_offset": 1800 }, { "zone_id": 0, "m_offset": 1920 }, { "zone_id": 7690, "m_offset": 2640 }, { "zone_id": 6622, "m_offset": 2760 }, { "zone_id": 1, "m_offset": 2820 }, { "zone_id": 3, "m_offset": 3060 }, { "zone_id": 1, "m_offset": 3120 }, { "zone_id": 3, "m_offset": 3180 }, { "zone_id": 9373, "m_offset": 3240 }, { "zone_id": 0, "m_offset": 3360 }, { "zone_id": 7690, "m_offset": 4080 }, { "zone_id": 6622, "m_offset": 4200 }, { "zone_id": 1, "m_offset": 4260 }, { "zone_id": 3, "m_offset": 4500 }, { "zone_id": 1, "m_offset": 4560 }, { "zone_id": 3, "m_offset": 4620 }, { "zone_id": 9373, "m_offset": 4680 }, { "zone_id": 0, "m_offset": 4800 }, { "zone_id": 7690, "m_offset": 5520 }, { "zone_id": 6622, "m_offset": 5640 }, { "zone_id": 1, "m_offset": 5700 }, { "zone_id": 3, "m_offset": 5940 }, { "zone_id": 1, "m_offset": 6000 }, { "zone_id": 3, "m_offset": 6060 }, { "zone_id": 9373, "m_offset": 6120 }, { "zone_id": 0, "m_offset": 6240 }, { "zone_id": 7690, "m_offset": 6960 }, { "zone_id": 6622, "m_offset": 7140 }, { "zone_id": 1, "m_offset": 7200 }, { "zone_id": 9373, "m_offset": 7620 }, { "zone_id": 3, "m_offset": 7680 }, { "zone_id": 0, "m_offset": 7740 }, { "zone_id": 7690, "m_offset": 8400 }, { "zone_id": 6622, "m_offset": 8580 }, { "zone_id": 1, "m_offset": 8640 }, { "zone_id": 9373, "m_offset": 9060 }, { "zone_id": 3, "m_offset": 9120 }, { "zone_id": 0, "m_offset": 9180 }, { "zone_id": 7690, "m_offset": 9840 }, { "zone_id": 6622, "m_offset": 9960 }, { "zone_id": 1, "m_offset": 10020 } ], "zones": [ { "name": "Komfort", "id": 0, "type": 0, "rooms_temp": [ { "room_id": "yx", "temp": 19 }, { "room_id": "xy", "temp": 20 }, { "room_id": "xy", "temp": 19 }, { "room_id": "xy", "temp": 18 }, { "room_id": "xy", "temp": 20 } ], "rooms": [ { "id": "xy", "therm_setpoint_temperature": 19 }, { "id": "xy", "therm_setpoint_temperature": 20 }, { "id": "xy", "therm_setpoint_temperature": 19 }, { "id": "xy", "therm_setpoint_temperature": 18 }, { "id": "xy", "therm_setpoint_temperature": 20 } ] }, { "name": "Nacht", "id": 1, "type": 1, "rooms_temp": [ { "room_id": "xy", "temp": 19 }, { "room_id": "xy", "temp": 20 }, { "room_id": "xy", "temp": 19 }, { "room_id": "xy", "temp": 17 }, { "room_id": "xy", "temp": 18 } ], "rooms": [ { "id": "xy", "therm_setpoint_temperature": 19 }, { "id": "xy", "therm_setpoint_temperature": 20 }, { "id": "xy", "therm_setpoint_temperature": 19 }, { "id": "xy", "therm_setpoint_temperature": 17 }, { "id": "xy", "therm_setpoint_temperature": 18 } ] }, { "name": "Eco", "id": 4, "type": 5, "rooms_temp": [ { "room_id": "xy", "temp": 18 }, { "room_id": "xy", "temp": 18 }, { "room_id": "xy", "temp": 18 }, { "room_id": "xy", "temp": 18 }, { "room_id": "xy", "temp": 18 } ], "rooms": [ { "id": "xy", "therm_setpoint_temperature": 18 }, { "id": "xy", "therm_setpoint_temperature": 18 }, { "id": "xy", "therm_setpoint_temperature": 18 }, { "id": "xy", "therm_setpoint_temperature": 18 }, { "id": "xy", "therm_setpoint_temperature": 18 } ] }, { "name": "Aufstehen", "id": 9373, "type": 4, "rooms_temp": [ { "room_id": "xy", "temp": 19 }, { "room_id": "xy", "temp": 20 }, { "room_id": "xy", "temp": 19 }, { "room_id": "xy", "temp": 19 }, { "room_id": "xy", "temp": 19 } ], "rooms": [ { "id": "xy", "therm_setpoint_temperature": 19 }, { "id": "xy", "therm_setpoint_temperature": 20 }, { "id": "xy", "therm_setpoint_temperature": 19 }, { "id": "xy", "therm_setpoint_temperature": 19 }, { "id": "xy", "therm_setpoint_temperature": 19 } ] }, { "name": "Schlafen", "id": 6622, "type": 4, "rooms_temp": [ { "room_id": "xy", "temp": 19 }, { "room_id": "xy", "temp": 20 }, { "room_id": "xy", "temp": 19 }, { "room_id": "xy", "temp": 20 }, { "room_id": "xy", "temp": 19 } ], "rooms": [ { "id": "xy", "therm_setpoint_temperature": 19 }, { "id": "xy", "therm_setpoint_temperature": 20 }, { "id": "xy", "therm_setpoint_temperature": 19 }, { "id": "xy", "therm_setpoint_temperature": 20 }, { "id": "xy", "therm_setpoint_temperature": 19 } ] }, { "name": "Schlarfzimmer Warm", "id": 7690, "type": 4, "rooms_temp": [ { "room_id": "yx", "temp": 19 }, { "room_id": "xy", "temp": 20 }, { "room_id": "xy", "temp": 19 }, { "room_id": "xy", "temp": 19 }, { "room_id": "xy", "temp": 19 } ], "rooms": [ { "id": "xy", "therm_setpoint_temperature": 19 }, { "id": "xy", "therm_setpoint_temperature": 20 }, { "id": "xy", "therm_setpoint_temperature": 19 }, { "id": "xy", "therm_setpoint_temperature": 19 }, { "id": "xy", "therm_setpoint_temperature": 19 } ] }, { "name": "Komfort+", "id": 3, "type": 8, "rooms_temp": [ { "room_id": "xy", "temp": 19 }, { "room_id": "xy", "temp": 20 }, { "room_id": "xy", "temp": 19 }, { "room_id": "xy", "temp": 19 }, { "room_id": "xy", "temp": 20 } ], "rooms": [ { "id": "xy", "therm_setpoint_temperature": 19 }, { "id": "xy", "therm_setpoint_temperature": 20 }, { "id": "xy", "therm_setpoint_temperature": 19 }, { "id": "xy", "therm_setpoint_temperature": 19 }, { "id": "xy", "therm_setpoint_temperature": 20 } ] } ], "name": "Winter", "default": false, "away_temp": 16, "hg_temp": 7, "id": "xy", "selected": true, "type": "therm" }, { "timetable": [ { "zone_id": 1, "m_offset": 0 }, { "zone_id": 0, "m_offset": 360 }, { "zone_id": 4, "m_offset": 480 }, { "zone_id": 0, "m_offset": 1020 }, { "zone_id": 1, "m_offset": 1320 }, { "zone_id": 0, "m_offset": 1800 }, { "zone_id": 4, "m_offset": 1920 }, { "zone_id": 0, "m_offset": 2460 }, { "zone_id": 1, "m_offset": 2760 }, { "zone_id": 0, "m_offset": 3240 }, { "zone_id": 4, "m_offset": 3360 }, { "zone_id": 0, "m_offset": 3900 }, { "zone_id": 1, "m_offset": 4200 }, { "zone_id": 0, "m_offset": 4680 }, { "zone_id": 4, "m_offset": 4800 }, { "zone_id": 0, "m_offset": 5340 }, { "zone_id": 1, "m_offset": 5640 }, { "zone_id": 0, "m_offset": 6120 }, { "zone_id": 4, "m_offset": 6240 }, { "zone_id": 3, "m_offset": 6660 }, { "zone_id": 0, "m_offset": 6960 }, { "zone_id": 1, "m_offset": 7140 }, { "zone_id": 0, "m_offset": 7620 }, { "zone_id": 3, "m_offset": 7740 }, { "zone_id": 0, "m_offset": 8400 }, { "zone_id": 1, "m_offset": 8580 }, { "zone_id": 0, "m_offset": 9060 }, { "zone_id": 3, "m_offset": 9180 }, { "zone_id": 0, "m_offset": 9840 }, { "zone_id": 1, "m_offset": 9960 } ], "zones": [ { "name": "", "id": 1, "type": 1, "rooms_temp": [ { "room_id": "xy", "temp": 16 }, { "room_id": "xy", "temp": 16 }, { "room_id": "xy", "temp": 16 }, { "room_id": "xy", "temp": 16 }, { "room_id": "xy", "temp": 16 } ], "rooms": [ { "id": "xy", "therm_setpoint_temperature": 16 }, { "id": "xy", "therm_setpoint_temperature": 16 }, { "id": "xy", "therm_setpoint_temperature": 16 }, { "id": "xy", "therm_setpoint_temperature": 16 }, { "id": "xy", "therm_setpoint_temperature": 16 } ] }, { "name": "Eco", "id": 4, "type": 5, "rooms_temp": [ { "room_id": "xy", "temp": 16 }, { "room_id": "xy", "temp": 16 }, { "room_id": "xy", "temp": 16 }, { "room_id": "xy", "temp": 16 }, { "room_id": "xy", "temp": 16 } ], "rooms": [ { "id": "xy", "therm_setpoint_temperature": 16 }, { "id": "xy", "therm_setpoint_temperature": 16 }, { "id": "xy", "therm_setpoint_temperature": 16 }, { "id": "xy", "therm_setpoint_temperature": 16 }, { "id": "xy", "therm_setpoint_temperature": 16 } ] }, { "name": "Komfort", "id": 0, "type": 0, "rooms_temp": [ { "room_id": "xy", "temp": 18 }, { "room_id": "xy", "temp": 18 }, { "room_id": "xy", "temp": 18 }, { "room_id": "xy", "temp": 18 }, { "room_id": "xy", "temp": 18 } ], "rooms": [ { "id": "xy", "therm_setpoint_temperature": 18 }, { "id": "xy", "therm_setpoint_temperature": 18 }, { "id": "xy", "therm_setpoint_temperature": 18 }, { "id": "xy", "therm_setpoint_temperature": 18 }, { "id": "xy", "therm_setpoint_temperature": 18 } ] }, { "name": "Komfort+", "id": 3, "type": 8, "rooms_temp": [ { "room_id": "xy", "temp": 18 }, { "room_id": "xy", "temp": 18 }, { "room_id": "xy", "temp": 18 }, { "room_id": "xy", "temp": 18 }, { "room_id": "xy", "temp": 18 } ], "rooms": [ { "id": "yx", "therm_setpoint_temperature": 18 }, { "id": "yx", "therm_setpoint_temperature": 18 }, { "id": "yx", "therm_setpoint_temperature": 18 }, { "id": "yx", "therm_setpoint_temperature": 18 }, { "id": "yx", "therm_setpoint_temperature": 18 } ] } ], "name": "Sommer", "default": false, "away_temp": 12, "hg_temp": 7, "id": "xy", "type": "therm" } ] } ], "user": { "email": "xy@web.de", "language": "de-DE", "locale": "de-DE", "feel_like_algorithm": 0, "unit_pressure": 0, "unit_system": 0, "unit_wind": 0, "id": "xy" } }, "status": "ok", "time_exec": 0.021591901779174805, "time_server": 1611503100 }
-
machst du das in blockly oder in javascript?
wie heißt das objekt/variable, dem du das JSON zuweist?
Wenn die Variable a heist, dann ist das folgende richtig:a.body.homes[0].name
edit:
ok du holst es aus einem datenpunkt raus.
ist das JSON dort als String oder schon als Objekt drin? Wahrscheinlich string.
Dann musst du es erst in ein Objekt umwandelnvar a = JSON.parse(getState("Objekt_ID").val); a.body.homes[0].name
-
keine chance, ich bekomme immer den wert "null" zurück...
ich machs in Blockly aber sollte normal genauso gehen!
homeData = (function () { try {return JSON.parse(getState("0_userdata.0.Eigene_Objekte.Netatmo.Home_Data_json").val);} catch(e) {return {};}})(); homeName = getAttr(homeData, 'body.homes[0].name'); console.log(homeName);
das kann doch nicht wahr sein, ich werde noch bekloppt!
-
@newpicsel sagte in Brauche hilfe json Array verschachtelung zu parsen:
das kann doch nicht wahr sein, ich werde noch bekloppt!
ich glaube da stimmt was nicht mit Blockly, bin aber nicht ganz sicher. So gehts aber
-
@fastfoot sagte in Brauche hilfe json Array verschachtelung zu parsen:
ich glaube da stimmt was nicht mit Blockly, bin aber nicht ganz sicher.
Also, auch ältere Versionen arbeiten nicht anders, bin bis auf die 4.7.4 zurück. Mich kommt aber
body.homes.0
als Attribut seltsam vor. @paul53 was meinst Du dazu? In JS jedenfalls wäre das ungültig, wird in Blockly ja allerdings mit getAttr() gemacht -
Unglaublich es funktioniert, sobald einmal die array "[]homes" selektiert ist, kannst danach alle werte auslesen!
vielen Dank!dann muss ich nur noch eine liste aus allen id´s von "modules.modules_bridged" erstellen, wie kann ich dann die zugehörigen namen der id´s ermitteln?
kann ich eine aktion in eine schleife packen, die genau so oft durchläuft wie id´s in der liste sind und jedesmal die variable mit der nächsten id gefüllt wird?
geht darum, dass die objekte der räume automatisch angelegt werden, die ja bei jedem user anders heißen und unterschiedlich viele sind...für mich könnte ich alles manuel anlegen aber es soll ja am besten ohne weiteres für alle anwendbar sein.
"modules": [ { "id": "xy", "type": "NAPlug", "name": "Relais", "setup_date": 1512123665, "modules_bridged": [ "123","456","789","987","654" ] },
{ "id": "123", "name": "Wohnzimmer", "type": "custom", "module_ids": [ "123" ] }, { "id": "456", "name": "Badezimmer", "type": "bathroom", "module_ids": [ "456" ] }
-
@fastfoot said in Brauche hilfe json Array verschachtelung zu parsen:
Also, auch ältere Versionen arbeiten nicht anders, bin bis auf die 4.7.4 zurück. Mich kommt aber
body.homes.0
als Attribut seltsam vor. @paul53 was meinst Du dazu? In JS jedenfalls wäre das ungültig, wird in Blockly ja allerdings mit getAttr() gemachtAlso ich hab den schritt body.homes.0 nicht getestet, da ich in der liste "ListElem" auf die werte schon zugreifen kann, ich finds auch seltsam aber ich kenne mich auch nicht damit aus...
-
@newpicsel Auf modules kannst du so zugreifen
-
@newpicsel sagte in Brauche hilfe json Array verschachtelung zu parsen:
Also ich hab den schritt body.homes.0 nicht getestet, da ich in der liste "ListElem" auf die werte schon zugreifen kann,
für ListElem so
-
Ja stimmt, jetzt wo ich den block gesehen habe, ist es mir auch wieder eingefallen.
Danke dir und auch den anderen, ich bin fast verzweifelt!