祝大家周末愉快!简单的新手问题: 我正在尝试使用ArduinoJson库获取一些json数据。我不知道如何从多维数组中获取数据。
这是json:
{"file":"1.png","time":"15000","data":[["test1","test2"],["test3","test4"],["test5","test6"]]}
代码如下:
// Allocate the JSON document
// Use arduinojson.org/v6/assistant to compute the capacity.
const size_t capacity = 3*JSON_ARRAY_SIZE(2) + JSON_ARRAY_SIZE(3) + JSON_OBJECT_SIZE(3)+63;
DynamicJsonDocument doc(capacity);
// Parse JSON object
DeserializationError error = deserializeJson(doc, client);
if (error) {
Serial.print(F("deserializeJson() failed: "));
Serial.println(error.c_str());
return;
}
// Extract values
Serial.println(F("Response:"));
Serial.println(doc["file"].as<char*>());
Serial.println(doc["time"].as<long>());
Serial.println(doc["data"][0][0].as<char>());
Serial.println(doc["data"][0][1].as<char>());
Serial.println(doc["data"][1][0].as<char>());
Serial.println(doc["data"][1][1].as<char>());
Serial.println(doc["data"][2][0].as<char>());
Serial.println(doc["data"][2][1].as<char>());
结果如下:
16:25:30.933 -> Response:
16:25:30.933 -> 1.png
16:25:30.933 -> 15000
16:25:30.933 ->
16:25:30.933 ->
16:25:30.933 ->
16:25:30.933 ->
16:25:30.933 ->
16:25:30.933 ->
16:25:30.933 -> *WM: freeing allocated params!
我如何获得“数据”子阵列的问题?
答案 0 :(得分:0)
有点晚了,但仍然...缺少星号。您必须以与在Serial.println(doc["file"].as<char*>());
行中相同的方式传递指针。
替换
Serial.println(doc["data"][0][0].as<char>());
Serial.println(doc["data"][0][1].as<char>());
Serial.println(doc["data"][1][0].as<char>());
Serial.println(doc["data"][1][1].as<char>());
Serial.println(doc["data"][2][0].as<char>());
Serial.println(doc["data"][2][1].as<char>());
与
Serial.println(doc["data"][0][0].as<char *>());
Serial.println(doc["data"][0][1].as<char *>());
Serial.println(doc["data"][1][0].as<char *>());
Serial.println(doc["data"][1][1].as<char *>());
Serial.println(doc["data"][2][0].as<char *>());
Serial.println(doc["data"][2][1].as<char *>());
我试图将其添加到您的代码中,结果是
Response:
1.png
15000
test1
test2
test3
test4
test5
test6