18-03-2016, 11:25:56
(Dieser Beitrag wurde zuletzt bearbeitet: 19-03-2016, 05:26:34 von HansLenz.)
Tipp JSON-Daten parsen
Etliche über einen Webservice angeschlossene Systeme antworten heutzutage mit JSON Daten. Bisher hatte ich in den vorgestellten Tasker-Skripts darauf keine Rücksicht genommen und die benötigten Daten einfach aus der gelieferten char Variable extrahiert. Das ist nicht falsch, geht aber auch mit Tasker eleganter, verkürzt das Skript nebenbei um etliche Zeilen und dient der Übersichtlichkeit.
Und zwar füge ich im Skript Code vom Type JavaScriptlet ein. Im Code wird die Methode parse des Objekts JSON verwendet.
So ersetzt z.B. der Code etliche Skriptzeilen aus dem "Tipp Netatmo-Daten auslesen":
var netatmo_return = netatmo_reg;
var data = JSON.parse(netatmo_return);
var access_token = data.access_token;
Der Code um Luftdruck und -Tendenz zu parsen sieht dann so aus:
var netatmo_return = netatmo_data;
var data = JSON.parse(netatmo_return);
var pressure = data.body.devices[0].dashboard_data.Pressure;
var pressure_trend = data.body.devices[0].dashboard_data.pressure_trend;
Um den Aufbau der Variablen, z.B. data.body.devices[0].dashboard_data.pressure_trend, einfach herauszufinden, nutze ich die Website http://www.jsoneditoronline.org/. Auf der linken Seite kann man mit Copy/Paste die angelieferten JSON-Rohdaten eintragen, auf der rechten Seite erscheint nach Anklicken des oberen Pfeils der in den Rohdaten enthaltene Variablen-Baum.
Ein weiterer Vorteil des Parsens mit der JSON.parse Methode ist die wesentlich schnellere Änderbarkeit der Tasker-Skripte. Falls weitere Daten zusätzlich ausgewertet werden, ist das nur noch ein Klacks.
Etliche über einen Webservice angeschlossene Systeme antworten heutzutage mit JSON Daten. Bisher hatte ich in den vorgestellten Tasker-Skripts darauf keine Rücksicht genommen und die benötigten Daten einfach aus der gelieferten char Variable extrahiert. Das ist nicht falsch, geht aber auch mit Tasker eleganter, verkürzt das Skript nebenbei um etliche Zeilen und dient der Übersichtlichkeit.
Und zwar füge ich im Skript Code vom Type JavaScriptlet ein. Im Code wird die Methode parse des Objekts JSON verwendet.
So ersetzt z.B. der Code etliche Skriptzeilen aus dem "Tipp Netatmo-Daten auslesen":
var netatmo_return = netatmo_reg;
var data = JSON.parse(netatmo_return);
var access_token = data.access_token;
Der Code um Luftdruck und -Tendenz zu parsen sieht dann so aus:
var netatmo_return = netatmo_data;
var data = JSON.parse(netatmo_return);
var pressure = data.body.devices[0].dashboard_data.Pressure;
var pressure_trend = data.body.devices[0].dashboard_data.pressure_trend;
Um den Aufbau der Variablen, z.B. data.body.devices[0].dashboard_data.pressure_trend, einfach herauszufinden, nutze ich die Website http://www.jsoneditoronline.org/. Auf der linken Seite kann man mit Copy/Paste die angelieferten JSON-Rohdaten eintragen, auf der rechten Seite erscheint nach Anklicken des oberen Pfeils der in den Rohdaten enthaltene Variablen-Baum.
Ein weiterer Vorteil des Parsens mit der JSON.parse Methode ist die wesentlich schnellere Änderbarkeit der Tasker-Skripte. Falls weitere Daten zusätzlich ausgewertet werden, ist das nur noch ein Klacks.