首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ArduinoJson DynamicJsonDocument

ArduinoJson DynamicJsonDocument
EN

Stack Overflow用户
提问于 2019-03-15 23:39:15
回答 1查看 1.3K关注 0票数 2

祝大家周末愉快!简单的新手问题:我正在尝试使用ArduinoJson库获取一些json数据。我不知道如何从多维数组中获取数据。

下面是json:

代码语言:javascript
复制
{"file":"1.png","time":"15000","data":[["test1","test2"],["test3","test4"],["test5","test6"]]}

代码如下:

代码语言:javascript
复制
// 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>());

结果如下:

代码语言:javascript
复制
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!

问题是我如何到达"data“子数组?

EN

回答 1

Stack Overflow用户

发布于 2020-05-07 22:18:57

有点晚了但还是..。缺少星号。您必须像在Serial.println(doc["file"].as<char*>());行中一样传递指针。

替换

代码语言:javascript
复制
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>());

使用

代码语言:javascript
复制
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 *>());

我尝试将它添加到您的代码中,结果是

代码语言:javascript
复制
Response:
1.png
15000
test1
test2
test3
test4
test5
test6
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55186124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档