首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ArduinoJson从对象中从数组中获取json键

使用ArduinoJson从对象中从数组中获取json键
EN

Stack Overflow用户
提问于 2022-02-07 18:45:08
回答 1查看 1.2K关注 0票数 1

在下面的json中,我很难从"prefs“中获取键(和值)。

代码语言:javascript
复制
{
  "cmd": "set",
  "prefs": [
    {
      "coins": 4
    },
    {
      "enable": true
    }
  ]
}

处理json的代码:

代码语言:javascript
复制
    DynamicJsonDocument doc(1024);
    deserializeJson(doc,"{\"cmd\":\"set\",\"prefs\":[{\"coins\":4},{\"enable\":true}]}");
    JsonObject root=doc.as<JsonObject>();
    for (JsonPair kv : root) {
        Serial.println(kv.key().c_str());
        Serial.println(kv.value().as<char*>());
    }
    JsonObject prefs=doc["prefs"];
    for (JsonPair kv : prefs) {
        Serial.println("here\n");
        Serial.println(kv.key().c_str());
//        Serial.println(kv.value().as<const char*>());
    }

希望看到以下输出:

代码语言:javascript
复制
cmd
set
prefs
coins
enable

但我只得到了一个似乎是空的prefs对象:

代码语言:javascript
复制
cmd
set
prefs

官方文件中显示的示例几乎使我达到了目的,这就是我在代码中所拥有的。这个github的例子是相似的,但我似乎不能使它适应我的情况。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-07 19:12:29

由于prefs是一个数组,所以将其转换为JsonArray

代码语言:javascript
复制
JsonArray prefs = doc["prefs"].as<JsonArray>();
for (JsonObject a : prefs) {
    for (JsonPair kv : a) {
        Serial.println(kv.key().c_str());
        if (kv.value().is<int>()) {
            Serial.println(kv.value().as<int>());
        }
        else {
            Serial.println(kv.value().as<bool>());
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71023794

复制
相关文章

相似问题

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