在下面的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官方文件中显示的示例几乎使我达到了目的,这就是我在代码中所拥有的。这个github的例子是相似的,但我似乎不能使它适应我的情况。
发布于 2022-02-07 19:12:29
由于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>());
}
}
}https://stackoverflow.com/questions/71023794
复制相似问题