<div dir="auto">Hi Christian,<div dir="auto"><br></div><div dir="auto">zeig mal deinen ganzen Code, mit diesem Schnipsel kann ich nicht nachvollziehen was du da treibst.</div><div dir="auto"><br></div><div dir="auto">Ansonsten sieht man doch in dem von mir geposteten Assistant-Code sehr gut wie Arrays adressiert werden: Index in eckigen Klammern, so wie man das erwarten würde.</div><div dir="auto"><br></div><div dir="auto">Grüße</div><div dir="auto">Frank</div></div><div class="gmail_extra"><br><div class="gmail_quote">Am 30.07.2017 14:29 schrieb "Christian Wulff" <<a href="mailto:christianwulff@gmx.de">christianwulff@gmx.de</a>>:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div lang="DE" link="blue" vlink="purple"><div class="m_1862812563326752980WordSection1"><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Moin Frank,<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">nee, den Hinweis brauche ich nicht. Das weiss ich selber.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Ich habe mir von beiden JSONs die Parsing programs von dem Assistant ausgedruckt und nebeneinandergelegt und mit dem funktionierenden Arduino Programm vom ersten JSON verglichen.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Was soll ich sagen?! Ich kann das nicht nachvollziehen.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Das erste JSON hat nur JSON Objects. Ich denke das verstehe ich. Jedenfalls funktioniert mein Programm damit.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Das zweite JSON hat aber JSON Arrays. Damit komme ich nicht klar.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Das mag aber vielleicht daran liegen, das mein original Beispiel Parsing Program von der Library völlig anders aussieht, als das vom Assistant?!<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">So sieht mein Parsing Program aus:<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">strcpy(userData->color, root["entity"]["color"]);<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">for (int pos=0; pos<7; pos++){ <u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">strcpy(resChannel,<wbr>channelfolder);<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">strcat(resChannel,UUID[pos]);<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">strcat(resChannel,<wbr>channelextension);<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">if (connect(server)) {<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">  if (sendRequest(server, resChannel) && skipResponseHeaders()) {<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">    UserData userData;<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">      if (readReponseChannel(&userData)<wbr>) {<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">        textcol[pos]=rgb565(userData.<wbr>color);<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">      </span><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">}<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">    }<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">  }<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">  disconnect();<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">}<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">So sieht das vom Assistant aus:<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">const size_t bufferSize = JSON_OBJECT_SIZE(2) + JSON_OBJECT_SIZE(9) + 190;<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">DynamicJsonBuffer jsonBuffer(bufferSize);<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">const char* json = "{\"version\":\"0.3\",\"<wbr>entity\":{\"uuid\":\"05ce3532-<wbr>97c7-1356-a454-754d9534563c\",<wbr>\"type\":\"temperature\",\"<wbr>active\":false,\"color\":\"#<wbr>009933\",\"fillstyle\":0,\"<wbr>public\":true,\"style\":\"<wbr>lines\",\"title\":\"T01 Aussen\",\"yaxis\":\"auto\"}}"<wbr>;<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">JsonObject& root = jsonBuffer.parseObject(json);<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">const char* version = root["version"]; // "0.3"<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">JsonObject& entity = root["entity"];<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">const char* entity_uuid = entity["uuid"]; // "05ce3532-97c7-1356-a454-<wbr>754d9534563c"<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">const char* entity_type = entity["type"]; // "temperature"<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">bool entity_active = entity["active"]; // false<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">const char* entity_color = entity["color"]; // "#009933"<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">int entity_fillstyle = entity["fillstyle"]; // 0<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">bool entity_public = entity["public"]; // true<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">const char* entity_style = entity["style"]; // "lines"<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">const char* entity_title = entity["title"]; // "T01 Aussen"<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">const char* entity_yaxis = entity["yaxis"]; // "auto"<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">…..da versteh ich leider nur Bahnhof. Da ist ja nichts vergleichbar/nachvollziehbar<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Deswegen kann ich für das zwei JSON die Agfrage von einem JSON Object nicht auf ein JSON Array umbauen, weil ich nicht weiss, wie ich die Einträge addressiere?!<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Lieben Gruß,<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Chris<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">Von:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> Frank Richter [mailto:<a href="mailto:frank.richter83@gmail.com" target="_blank">frank.richter83@gmail.<wbr>com</a>] <br><b>Gesendet:</b> Sonntag, 30. Juli 2017 02:19<br><b>An:</b> <a href="http://volkszaehler.org" target="_blank">volkszaehler.org</a> - users<br><b>Betreff:</b> Re: [vz-users] JSON parsen<u></u><u></u></span></p><p class="MsoNormal"><u></u> <u></u></p><div><p class="MsoNormal">Moin Christian,<u></u><u></u></p><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">brauchst du echt nochmal einen Hinweis auf <a href="https://bblanchon.github.io/ArduinoJson/assistant/" target="_blank">https://bblanchon.github.io/<wbr>ArduinoJson/assistant/</a> ?<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">Wenn du dort das fragliche JSON reinkopierst, komm folgendes raus:<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><pre style="background:white;margin-bottom:1rem"><span style="font-size:11.0pt;font-family:Consolas;color:#292b2c">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;<br>DynamicJsonBuffer jsonBuffer(bufferSize);<br><br>const char* json = "{\"version\":\"0.3\",\"data\"<wbr>:{\"tuples\":[[1501258250761,<wbr>20.312,1]],\"uuid\":\"<wbr>05ce3700-97c7-11e6-acf4-<wbr>754d9577033c\",\"from\":<wbr>1501258204011,\"to\":<wbr>1501258250761,\"min\":[<wbr>1501258250761,20.312],\"max\":<wbr>[1501258250761,20.312],\"<wbr>average\":20.312,\"rows\":2}}"<wbr>;<br><br>JsonObject& root = jsonBuffer.parseObject(json);<br><br>const char* version = root["version"]; // "0.3"<br><br>JsonObject& data = root["data"];<br><br>JsonArray& data_tuples0 = data["tuples"][0];<br>long data_tuples00 = data_tuples0[0]; // 1501258250761<br>float data_tuples01 = data_tuples0[1]; // 20.312<br>int data_tuples02 = data_tuples0[2]; // 1<br><br>const char* data_uuid = data["uuid"]; // "05ce3700-97c7-11e6-acf4-<wbr>754d9577033c"<br>long data_from = data["from"]; // 1501258204011<br>long data_to = data["to"]; // 1501258250761<br><br>long data_min0 = data["min"][0]; // 1501258250761<br>float data_min1 = data["min"][1]; // 20.312<br><br>long data_max0 = data["max"][0]; // 1501258250761<br>float data_max1 = data["max"][1]; // 20.312<br><br>float data_average = data["average"]; // 20.312<br>int data_rows = data["rows"]; // 2<u></u><u></u></span></pre></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">Was ist denn da noch unklar?<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">Gruß<u></u><u></u></p></div><div><p class="MsoNormal">Frank<u></u><u></u></p></div></div><div><p class="MsoNormal"><u></u> <u></u></p><div><p class="MsoNormal">Am 30.07.2017 01:39 schrieb "Christian Wulff" <<a href="mailto:christianwulff@gmx.de" target="_blank">christianwulff@gmx.de</a>>:<u></u><u></u></p><div><div><p class="MsoNormal">Moin,<u></u><u></u></p><p class="MsoNormal"> <u></u><u></u></p><p class="MsoNormal">Ich komme leider beim JSON parsen nicht weiter.<u></u><u></u></p><p class="MsoNormal"> <u></u><u></u></p><p class="MsoNormal">Das JSON des Channels habe ich inzwischen gut genug unter Kontrolle:<u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">{</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">  "version": "0.3",</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">   "entity": {</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">     "uuid": "05ce3532-97c7-1356-a454-<wbr>754d9534563c",</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">     "type": "temperature",</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">     "active": false,</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">     "color": "#009933",</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">     "fillstyle": 0,</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">     "public": true,</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">     "style": "lines",</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">     </span>"title": "T01 Aussen",<u></u><u></u></p><p class="MsoNormal">     "yaxis": "auto"<u></u><u></u></p><p class="MsoNormal">   }<u></u><u></u></p><p class="MsoNormal">}<u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">Dies hat die Expression:</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">JSON_OBJECT_SIZE(2) + JSON_OBJECT_SIZE(9)</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US"> </span><u></u><u></u></p><p class="MsoNormal">Da lese ich die "color" aus.<u></u><u></u></p><p class="MsoNormal">Die Adresse ist root["entity"]["color"]<u></u><u></u></p><p class="MsoNormal"> <u></u><u></u></p><p class="MsoNormal">Soweit kann ich das nachvollziehen.<u></u><u></u></p><p class="MsoNormal"> <u></u><u></u></p><p class="MsoNormal">Nun habe ich das Data JSON:<u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">{</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">   "version":"0.3",</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">   "data":{</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">      "tuples":[</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">         [1501258250761,20.312,1]],</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">      "uuid":"05ce3700-97c7-11e6-<wbr>acf4-754d9577033c",</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">      "from":1501258204011,</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">      "to":1501258250761,</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">      "min":[1501258250761,20.312],</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">      "max":[1501258250761,20.312],</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">      "average":20.312,</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">      </span>"rows":2<u></u><u></u></p><p class="MsoNormal">      }<u></u><u></u></p><p class="MsoNormal">}<u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">Dies hat die Expression:</span><u></u><u></u></p><p class="MsoNormal"><span lang="EN-US">JSON_ARRAY_SIZE(1) + 2*JSON_ARRAY_SIZE(2) + JSON_ARRAY_SIZE(3) + JSON_OBJECT_SIZE(2) + JSON_OBJECT_SIZE(8)</span><u></u><u></u></p><p class="MsoNormal"> <u></u><u></u></p><p class="MsoNormal">Da möchte ich aus dem Tuple in der 4. Zeile "1501258250761" (das ist der Timestamp) und "20.312" (das ist die Temperatur) auslesen.<u></u><u></u></p><p class="MsoNormal">Wie lauten denn davon die Adressen?<u></u><u></u></p><p class="MsoNormal">root["data"]["tuples ....... und da verließen sie mich?!<u></u><u></u></p><p class="MsoNormal"> <u></u><u></u></p><p class="MsoNormal">Könnte mir da jemand weiterhelfen?<u></u><u></u></p><p class="MsoNormal"> <u></u><u></u></p><p class="MsoNormal">Danke und lieben Gruß,<u></u><u></u></p><p class="MsoNormal">Chris<u></u><u></u></p></div></div></div></div></div></div></blockquote></div></div>