ArduinoJson DynamicJsonDocument

问题描述 投票:2回答:1

祝大家周末愉快! 简单的新手问题。我想用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!

问题是我如何获取 "数据 "子数组 ?

arduino arduino-esp8266
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.