我正在使用这个JSON解析器https://github.com/bblanchon/ArduinoJson。通过下面的示例,我可以很好地检索键和值。我在第二个例子中弄清楚如何获得嵌入式密钥。
示例1: #include
const char* sensor;
long time;
double latitude;
double longitude;
void setup() {
Serial.begin(115200);
char json[] = "{\"sensor\":\"gps\",\"time\":1351824120,\"data\":[48.756080,2.302038]}";
StaticJsonBuffer<200> jsonBuffer;
JsonObject& root = jsonBuffer.parseObject(json);
sensor = root["sensor"];
time = root["time"];
latitude = root["data"][0];
longitude = root["data"][1];
for (JsonObject::iterator it=root.begin(); it!=root.end(); ++it)
{
Serial.println(it->key);
}
}
void loop() {
// do absolutely nothing
}
示例1输出:
sensor
time
data
我如何从这样的JSON获取密钥?
示例2:
#include <ArduinoJson.h>
void setup() {
Serial.begin(115200);
char json[] = "{\"Devices\":[{\"Name\":\"something\",\"ModelNumber\":\"1234\"}]}";
StaticJsonBuffer<200> jsonBuffer;
JsonObject& root = jsonBuffer.parseObject(json);
for (JsonObject::iterator it=root.begin(); it!=root.end(); ++it)
{
Serial.println(it->key);
}
}
void loop() {
// do absolutely nothing
}
示例2输出:
Devices
编辑:
尝试建议的测试:
#include <ArduinoJson.h>
void setup() {
Serial.begin(115200);
char json[] = "{\"Devices\":[{\"Name\":\"something\",\"ModelNumber\":\"1234\"}],\"AnotherKey\":\"itsValue\"}";
StaticJsonBuffer<200> jsonBuffer;
JsonObject& root = jsonBuffer.parseObject(json);
for (JsonObject::iterator it=root.begin(); it!=root.end(); ++it)
{
Serial.println(it->key);
}
}
void loop() {
// do absolutely nothing
}
输出:
Devices
AnotherKey
答案 0 :(得分:0)
我明白了。我只需要根据第一个JSON对象创建一个单独的JSON对象。
#include <ArduinoJson.h>
void setup() {
Serial.begin(115200);
char json[] = "{\"Devices\":[{\"Name\":\"something\",\"ModelNumber\":\"1234\"}],\"AnotherKey\":\"itsValue\"}";
StaticJsonBuffer<200> jsonBuffer;
JsonObject& root = jsonBuffer.parseObject(json);
JsonObject& root2 = root["Devices"][0];
for (JsonObject::iterator it=root.begin(); it!=root.end(); ++it)
{
Serial.println(it->key);
}
for(JsonObject::iterator it=root2.begin(); it!=root2.end(); ++it)
{
Serial.println(it->key);
}
}
void loop() {
// do absolutely nothing
}
输出:
Devices
AnotherKey
Name
ModelNumber
它看起来并不强大,但它适用于我的情况。