功能说明
反序列化案例
char json[] = "{\"sensor\":\"gps\",\"time\":1351824120,\"data\":[48.756080,2.302038]}";
DynamicJsonDocument doc(1024);
//StaticJsonDocument<200> doc;
deserializeJson(doc, json);
const char* sensor = doc["sensor"];
long time = doc["time"];
double latitude = doc["data"][0];
double longitude = doc["data"][1];
DynamicJsonDocument的作用是动态生成一个长度为1024的doc;
还有一个方法是StaticJsonDocument,这个是生成静态的字符串数组;
前者存在heap也就是堆中,后者存在于栈中。
将json字符串转化为二维数组,定义变量取出值,待用,在c中比较麻烦的是取值的时候,定义变量要用类型声明。
序列化的案例
有问题 用到再说;
void setup() {
Serial.begin(9600);
DynamicJsonDocument doc(1024);
char s[200];
doc["sensor"] = "gps";
doc["time"] = 1351824120;
JsonArray data = doc.createNestedArray("data");
data.add(48.756080);
data.add(2.302038);
serializeJson(doc, s);
Serial.println("999999999999999");
Serial.println(s);
}
// {"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第二个为字符串数组;