我正在使用这个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发布于 2015-10-23 03:57:53
我想通了。我只需要基于第一个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它看起来不是很健壮,但在我的情况下可以工作。
https://stackoverflow.com/questions/33244310
复制相似问题