NEWS
(GELÖST) JSON Zeitplan auslesen
-
Hallo zusammen,
Dies bekomme ich vom bshb-Adapter unter dem DP "schedule"
{"profiles":[{"switchPoints":[{"startTimeMinutes":0,"value":{"@type":"temperatureLevelSwitchPointValue","temperatureLevel":"ECO"}},{"startTimeMinutes":255,"value":{"@type":"temperatureLevelSwitchPointValue","temperatureLevel":"COMFORT"}},{"startTimeMinutes":1300,"value":{"@type":"temperatureLevelSwitchPointValue","temperatureLevel":"ECO"}}],"day":"MONDAY"},{"switchPoints":[{"startTimeMinutes":0,"value":{"@type":"temperatureLevelSwitchPointValue","temperatureLevel":"ECO"}},{"startTimeMinutes":255,"value":{"@type":"temperatureLevelSwitchPointValue","temperatureLevel":"COMFORT"}},{"startTimeMinutes":1300,"value":{"@type":"temperatureLevelSwitchPointValue","temperatureLevel":"ECO"}}],"day":"TUESDAY"},{"switchPoints":[{"startTimeMinutes":0,"value":{"@type":"temperatureLevelSwitchPointValue","temperatureLevel":"ECO"}},{"startTimeMinutes":255,"value":{"@type":"temperatureLevelSwitchPointValue","temperatureLevel":"COMFORT"}},{"startTimeMinutes":1300,"value":{"@type":"temperatureLevelSwitchPointValue","temperatureLevel":"ECO"}}],"day":"WEDNESDAY"},{"switchPoints":[{"startTimeMinutes":0,"value":{"@type":"temperatureLevelSwitchPointValue","temperatureLevel":"ECO"}},{"startTimeMinutes":255,"value":{"@type":"temperatureLevelSwitchPointValue","temperatureLevel":"COMFORT"}},{"startTimeMinutes":1300,"value":{"@type":"temperatureLevelSwitchPointValue","temperatureLevel":"ECO"}}],"day":"THURSDAY"},{"switchPoints":[{"startTimeMinutes":0,"value":{"@type":"temperatureLevelSwitchPointValue","temperatureLevel":"ECO"}},{"startTimeMinutes":255,"value":{"@type":"temperatureLevelSwitchPointValue","temperatureLevel":"COMFORT"}},{"startTimeMinutes":1300,"value":{"@type":"temperatureLevelSwitchPointValue","temperatureLevel":"ECO"}}],"day":"FRIDAY"},{"switchPoints":[{"startTimeMinutes":0,"value":{"@type":"temperatureLevelSwitchPointValue","temperatureLevel":"ECO"}},{"startTimeMinutes":255,"value":{"@type":"temperatureLevelSwitchPointValue","temperatureLevel":"COMFORT"}},{"startTimeMinutes":1300,"value":{"@type":"temperatureLevelSwitchPointValue","temperatureLevel":"ECO"}}],"day":"SATURDAY"},{"switchPoints":[{"startTimeMinutes":0,"value":{"@type":"temperatureLevelSwitchPointValue","temperatureLevel":"ECO"}},{"startTimeMinutes":255,"value":{"@type":"temperatureLevelSwitchPointValue","temperatureLevel":"COMFORT"}},{"startTimeMinutes":1300,"value":{"@type":"temperatureLevelSwitchPointValue","temperatureLevel":"ECO"}}],"day":"SUNDAY"}]}
Nun möchte ich folgendes auslesen:
MONDAY ECO 0 COMFORT 255 ECO 1300
TUESDAY ECO 0 COMFORT 255 ECO 1300usw.
Wie geht das?
Kann mir mal einer einen Schubs geben?
Habe schon mit JSON.parse() versucht aber ich verstehe JSON einfach nicht!!!MfG
Wastl -
@langer
Ansatz:on(idJSON, function(dp) { let profile = JSON.parse(dp.state.val).profiles; // Array mit 7 Wochentagen, Mo = 0 for(let wd = 0; wd < 7; wd++) { let switchpoints = profile[wd].switchPoints; // Array mit Schaltpunkten eines Tages for(let i = 0; i < switchpoints.length; i++) { // enthält switchpoints[i].startTimeMinutes und switchpoints[i].value.temperatureLevel } } });
-
@langer Unabhängig von @paul53 's Ansatz, nutz doch mal den JSON Formater: https://jsonformatter.org/
Wenn man da Deinen String reinkopiert und dann schön formatierst dann kommt sowas raus:
Du siehst also Du bekommst ein in profiles ein Array[0-7] aus, das wiederrum ein Array aus 3 switchpoint Objekten enthält.
profiles[0].switchPoints[0].value.temperatureLevel ist dann der Pfad zu dem grün markierten Wert:
Das kann man in dem JSON Formatter sehen, wenn man auf den TreeView umschaltet (oranger Pfeil).
-