ArduinoJson DynamicJson文档

时间:2019-03-15 15:39:15

标签: arduino arduino-esp8266

祝大家周末愉快!简单的新手问题: 我正在尝试使用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!

我如何获得“数据”子阵列的问题?

1 个答案:

答案 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