Json 在 C++ 中序列化 (esp32)
Json serializing in C++ (esp32)
我正在为 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"]
returns [{"id":"6270","text":"ANDRE LARA OLIVEIRA E SILVA"}]
到 char 数组。所以它有点像嵌套到数组的 json ......而且它无法反序列化。
谁能帮我如何从“用户”对象正确获取“id”和“文本”值?
谢谢!
“谁能帮我如何从“用户”对象正确获取“id”和“文本”值?”您可以通过
访问它们
const char *id = result["user"]["id"];
const char *text = result["user"]["text"];
尝试:
const int id = result["user"]["id"];
const char* text = result["user"]["text"];
库不知道该字符串的内容是否有效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*>();
我正在为 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"]
returns [{"id":"6270","text":"ANDRE LARA OLIVEIRA E SILVA"}]
到 char 数组。所以它有点像嵌套到数组的 json ......而且它无法反序列化。
谁能帮我如何从“用户”对象正确获取“id”和“文本”值?
谢谢!
“谁能帮我如何从“用户”对象正确获取“id”和“文本”值?”您可以通过
访问它们const char *id = result["user"]["id"];
const char *text = result["user"]["text"];
尝试:
const int id = result["user"]["id"];
const char* text = result["user"]["text"];
库不知道该字符串的内容是否有效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*>();