功能说明

这个库是对json数据进行序列化和反序列化的:

反序列化案例

  1. char json[] = "{\"sensor\":\"gps\",\"time\":1351824120,\"data\":[48.756080,2.302038]}";
  2. DynamicJsonDocument doc(1024);
  3. //StaticJsonDocument<200> doc;
  4. deserializeJson(doc, json);
  5. const char* sensor = doc["sensor"];
  6. long time = doc["time"];
  7. double latitude = doc["data"][0];
  8. double longitude = doc["data"][1];

DynamicJsonDocument的作用是动态生成一个长度为1024的doc;
还有一个方法是StaticJsonDocument,这个是生成静态的字符串数组;

前者存在heap也就是堆中,后者存在于栈中。

将json字符串转化为二维数组,定义变量取出值,待用,在c中比较麻烦的是取值的时候,定义变量要用类型声明。

序列化的案例

有问题 用到再说;

  1. void setup() {
  2. Serial.begin(9600);
  3. DynamicJsonDocument doc(1024);
  4. char s[200];
  5. doc["sensor"] = "gps";
  6. doc["time"] = 1351824120;
  7. JsonArray data = doc.createNestedArray("data");
  8. data.add(48.756080);
  9. data.add(2.302038);
  10. serializeJson(doc, s);
  11. Serial.println("999999999999999");
  12. Serial.println(s);
  13. }
  14. // {"sensor":"gps","time":1351824120,"data":[48.756080,2.302038]}

1、创建doc实例,
2、追加属性,追加数组,
3、定义字符串数组,长度要超过doc的具体长度,估算大概长度
4、调用seriaizaJson方式将doc转化为字符串赋值给第三步定义的字符串

源码阅读

DynamicJsonDocument方法用来生成doc对象,类似数据中转中心;
serializeJson为序列化将doc转为json字符串
deserializeJson 将json字符串转化为doc实例
serializeJson与deserializeJson参数类似,第一个都为doc第二个为字符串数组;