[vz-users] JSON parsen
Frank Richter
frank.richter83 at gmail.com
Sun Jul 30 02:19:12 CEST 2017
Moin Christian,
brauchst du echt nochmal einen Hinweis auf
https://bblanchon.github.io/ArduinoJson/assistant/ ?
Wenn du dort das fragliche JSON reinkopierst, komm folgendes raus:
const size_t bufferSize = JSON_ARRAY_SIZE(1) + 2*JSON_ARRAY_SIZE(2) +
JSON_ARRAY_SIZE(3) + JSON_OBJECT_SIZE(2) + JSON_OBJECT_SIZE(8) + 220;
DynamicJsonBuffer jsonBuffer(bufferSize);
const char* json =
"{\"version\":\"0.3\",\"data\":{\"tuples\":[[1501258250761,20.312,1]],\"uuid\":\"05ce3700-97c7-11e6-acf4-754d9577033c\",\"from\":1501258204011,\"to\":1501258250761,\"min\":[1501258250761,20.312],\"max\":[1501258250761,20.312],\"average\":20.312,\"rows\":2}}";
JsonObject& root = jsonBuffer.parseObject(json);
const char* version = root["version"]; // "0.3"
JsonObject& data = root["data"];
JsonArray& data_tuples0 = data["tuples"][0];
long data_tuples00 = data_tuples0[0]; // 1501258250761
float data_tuples01 = data_tuples0[1]; // 20.312
int data_tuples02 = data_tuples0[2]; // 1
const char* data_uuid = data["uuid"]; // "05ce3700-97c7-11e6-acf4-754d9577033c"
long data_from = data["from"]; // 1501258204011
long data_to = data["to"]; // 1501258250761
long data_min0 = data["min"][0]; // 1501258250761
float data_min1 = data["min"][1]; // 20.312
long data_max0 = data["max"][0]; // 1501258250761
float data_max1 = data["max"][1]; // 20.312
float data_average = data["average"]; // 20.312
int data_rows = data["rows"]; // 2
Was ist denn da noch unklar?
Gruß
Frank
Am 30.07.2017 01:39 schrieb "Christian Wulff" <christianwulff at gmx.de>:
> Moin,
>
>
>
> Ich komme leider beim JSON parsen nicht weiter.
>
>
>
> Das JSON des Channels habe ich inzwischen gut genug unter Kontrolle:
>
> {
>
> "version": "0.3",
>
> "entity": {
>
> "uuid": "05ce3532-97c7-1356-a454-754d9534563c",
>
> "type": "temperature",
>
> "active": false,
>
> "color": "#009933",
>
> "fillstyle": 0,
>
> "public": true,
>
> "style": "lines",
>
> "title": "T01 Aussen",
>
> "yaxis": "auto"
>
> }
>
> }
>
> Dies hat die Expression:
>
> JSON_OBJECT_SIZE(2) + JSON_OBJECT_SIZE(9)
>
>
>
> Da lese ich die "color" aus.
>
> Die Adresse ist root["entity"]["color"]
>
>
>
> Soweit kann ich das nachvollziehen.
>
>
>
> Nun habe ich das Data JSON:
>
> {
>
> "version":"0.3",
>
> "data":{
>
> "tuples":[
>
> [1501258250761,20.312,1]],
>
> "uuid":"05ce3700-97c7-11e6-acf4-754d9577033c",
>
> "from":1501258204011,
>
> "to":1501258250761,
>
> "min":[1501258250761,20.312],
>
> "max":[1501258250761,20.312],
>
> "average":20.312,
>
> "rows":2
>
> }
>
> }
>
> Dies hat die Expression:
>
> JSON_ARRAY_SIZE(1) + 2*JSON_ARRAY_SIZE(2) + JSON_ARRAY_SIZE(3) +
> JSON_OBJECT_SIZE(2) + JSON_OBJECT_SIZE(8)
>
>
>
> Da möchte ich aus dem Tuple in der 4. Zeile "1501258250761" (das ist der
> Timestamp) und "20.312" (das ist die Temperatur) auslesen.
>
> Wie lauten denn davon die Adressen?
>
> root["data"]["tuples ....... und da verließen sie mich?!
>
>
>
> Könnte mir da jemand weiterhelfen?
>
>
>
> Danke und lieben Gruß,
>
> Chris
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://demo.volkszaehler.org/pipermail/volkszaehler-users/attachments/20170730/ba67717c/attachment.html>
More information about the volkszaehler-users
mailing list