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

Getting json keys from an array from an object using ArduinoJson

我无法从以下 json 中的“prefs”获取键(和值)。

{
  "cmd": "set",
  "prefs": [
    {
      "coins": 4
    },
    {
      "enable": true
    }
  ]
}

要处理的代码 json:

    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*>());
    }

期望看到以下输出:

cmd
set
prefs
coins
enable

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

cmd
set
prefs

official docs almost gets me there, and is what I have in my code. This example from github 中显示的示例类似,但我似乎无法适应我的情况。

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

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>());
        }
    }
}