ArduinoJson
- 官方实例代码
- 实例ESP8266使用ArduinoJson
- 官方地址
??ArduinoJson(全称:ArduinoJson-C++ JSON Library for IoT) 是嵌入式系统中优雅和高效的Json库。它仅使用最基本的API,确保工作时消耗最小的内存空间。虽然它的命名中包含“Arduino”,但事实上并没有引用Arduino的任何库文件。ArduinoJson基于MIT开源协议,也就是说它是免费的,因此可以应用在任何的C++项目中。
??序列化是将对象状态转换为可保持或可传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。序列化与反序列化,在Esp8266中使用就是在连接到服务器之后,收发数据的处理。
官方实例代码
前提是需要在Arduino编译器里面下载安装ArduinoJson库文件。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | #include <ArduinoJson.h> void setup() { Serial.begin(9600); DynamicJsonDocument doc(1024); // WARNING: the string in the input will be duplicated in the JsonDocument. String input = "{"sensor":"gps","time":1351824120,"data":[48.756080,2.302038]}"; deserializeJson(doc, input); JsonObject obj = doc.as<JsonObject>(); // You can use a String to get an element of a JsonObject // No duplication is done. //反序列化 long time = obj[String("time")]; String sensor = obj["sensor"]; double latitude = doc["data"][0]; double longitude = doc["data"][1]; // Print values. Serial.println(sensor); Serial.println(time); Serial.println(latitude, 6); Serial.println(longitude, 6); //序列化 obj["sensor"] = "new gps"; obj["code"] = 200; // Lastly, you can print the resulting JSON to a String String output; serializeJson(doc, output); Serial.println(output); } void loop() { // not used in this example } |
结果:

deserializeJson(doc, input),反序列化,将object 对象转换成 string。 serializeJson(doc, output),内容序列化为json格式字符串,以便于传输。
DynamicJsonDocument doc(1024);
JsonObject obj = doc.as();
创建了一个动态json,设置属性。
实例ESP8266使用ArduinoJson
??自己使用Esp8266处理服务器收到数据代码,可以看我下一篇博客,关于Esp8266连接阿里云服务器。

官方地址
更多ArduinoJson库的相关资料请在官网查看。https://arduinojson.org/

??ArduinoJson Assistant可以帮助自动计算Size大小。