I'm trying to extract values using ArduinoJson. The values aren't fixed, therefore I need to use the foreach loop.
I'm trying this, but I can't seem to use the values like I could with.
root["0"]["value"].as<const char*>();
Here is my code.
void loop(){
int httpCode = http.GET();
if(httpCode > 0) {
// if Get request has processed
if(httpCode == HTTP_CODE_OK) {
payload = http.getString();
}
if(payload.length() > 0) {
Serial.println(payload);
JsonObject& root = jsonBuffer.parseObject(payload);
if (!root.success()) {
Serial.println("parseObject() failed");
jsonBuffer.clear();
} else {
Serial.println("Data Fetched");
for(JsonPair& node : root) {
Serial.print("0 State: ");
Serial.println(*node);
}
http.end();
}
} else {
Serial.println("Payload Empty");
}
}
}
Please avoid any missing brackets. Thanks in advance.
[{"state": true, "value": 10}, {"state": false, "value": 8}, {"state": false, "value": 5}, {"state": false, "value": 13}]
1 Answer 1
I found another way around the solution.
Idk if this is helpful to anyone but the problem was that I had an unknown number of nodes I wanted to loop through, Example of the json format above.
void loop(){
int httpCode = http.GET();
if(httpCode > 0) {
// if Get request has processed
if(httpCode == HTTP_CODE_OK) {
payload = http.getString();
}
if(payload.length() > 0){
JsonArray& nodes = jsonBuffer.parseArray(payload);
if (!nodes.success()) {
Serial.println("parseObject() failed");
jsonBuffer.clear();
}else{
int node_length = nodes.size();
for(int i=0; i<node_length;i++){
Serial.printf("node-%i\nValue : ",i );
String value = nodes[i]["value"].as<const char*>();
String state = nodes[i]["state"].as<const char*>();
Serial.println(value);
Serial.print("State : ");
Serial.println(state);
}
http.end();
}
}else{
Serial.println("Payload Empty");
}
}
jsonBuffer.clear();
delay(8000);
}
-
so you found out that the json array has a size property?2018年04月20日 09:04:26 +00:00Commented Apr 20, 2018 at 9:04
-
Yes both
jsonArray
andjsonObject
has size propertySheraz Ahmed– Sheraz Ahmed2018年04月20日 09:26:19 +00:00Commented Apr 20, 2018 at 9:26
root[0]["value"]
?avoid any missing brackets
.... how do you avoid something that does not exist?