0

我正在为 esp32 编写一些脚本并努力序列化 json。

使用的库是 HTTPClient 和 ArduinoJson。

String payload = http.getString();
Serial.println(payload);
deserializeJson(result, payload);
const char* usuario = result["user"];
Serial.println("##########");
Serial.println(usuario);

接收到的有效载荷是:

{"ip":"10.57.39.137","area":"[{\"id\":\"3\",\"text\":\"BOX\"}]","user":"[{\"id\":\"6270\",\"text\":\"ANDRE LARA OLIVEIRA E SILVA\"}]","teamId":6,"id":4,"siteId":2,"userCreate":"100059527","dateCreate":"2020-11-19T08:49:03.957","userUpdate":null,"dateUpdate":null}

我需要从“用户”键中检索 id 和文本。反序列化和检索用户对象很好。但result["user"]返回 [{"id":"6270","text":"ANDRE LARA OLIVEIRA E SILVA"}]char 数组。所以它有点像嵌套到数组的 json ......而且它无法反序列化。

谁能帮助我如何从“用户”对象中正确获取“id”和“text”值?

谢谢!

4

3 回答 3

0

尝试:

const int id = result["user"]["id"];
const char* text = result["user"]["text"];
于 2020-11-19T14:34:11.767 回答
0

“谁能帮助我如何从“用户”对象中正确获取“id”和“text”值?” 您可以通过以下方式访问它们

const char *id = result["user"]["id"];
const char *text = result["user"]["text"];
于 2020-11-19T14:23:22.817 回答
0

该库不知道该字符串的内容是有效的 JSON,因此您必须重新解析它。这段代码在我的电脑上对我有用,虽然我没有 Arduino 来测试它:

auto payload = "..."; // JSON content here
StaticJsonDocument<1024> result;
deserializeJson(result, payload);
auto user = result["user"].as<const char*>();

StaticJsonDocument<256> userObj;
deserializeJson(userObj, user);
auto id = userObj[0]["id"].as<int>();
auto text = userObj[0]["text"].as<const char*>();
于 2020-11-19T17:43:27.240 回答