使用 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>());
}
}
}
我无法从以下 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>());
}
}
}