首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ArduinoJSON解析器检索嵌入式密钥

使用ArduinoJSON解析器检索嵌入式密钥
EN

Stack Overflow用户
提问于 2015-10-21 02:37:09
回答 1查看 1.6K关注 0票数 1

我正在使用这个JSON解析器,https://github.com/bblanchon/ArduinoJson。通过下面的示例,我可以很好地检索键和值。我在弄清楚如何在第二个示例中获得嵌入式键时遇到了麻烦。

示例1:#include

代码语言:javascript
复制
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输出:

代码语言:javascript
复制
sensor
time
data

我怎样才能像这样从JSON获取密钥?

示例2:

代码语言:javascript
复制
#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输出:

代码语言:javascript
复制
Devices

编辑:

尝试建议的测试:

代码语言:javascript
复制
#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
}

输出:

代码语言:javascript
复制
Devices
AnotherKey
EN

回答 1

Stack Overflow用户

发布于 2015-10-23 03:57:53

我想通了。我只需要基于第一个JSON对象创建一个单独的JSON对象。

代码语言:javascript
复制
#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
}

输出:

代码语言:javascript
复制
Devices
AnotherKey
Name
ModelNumber

它看起来不是很健壮,但在我的情况下可以工作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33244310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档