单一对象的json数据解析
#include<ArduinoJson.h>//需要用到这个头文件
void setup(){
serial.begin(9600);
serial.printIn("");//启动串口通讯
const size_t capacity = Json_object_size(2) +30;//给出了解析具体需要的空间,30内存余量
DynamicJsonDocument doc(capacity);//建立一个类型为DynamicJsonDocument,名字为doc 的对象
//该对象的作用就是来解析json格式的信息
//提供参数Capacity 变量类型为 size_t(类似于unsigned long )
//capacity代表解析json信息需要多大的空间
//
string json = "{\"name\":\"taichi-maker\",\"number\":1}";//即将解析的json信息
deserializeJson(doc,json);//解析json函数,将结果存储到doc对象。
string nameStr = doc["name"].as<srting>();//解析name并将值转换为字符串形式,赋值到新定义的namestr中。
int numberint = doc["number"].as<int>();
Serial.print("nameStr = ");Serial.printIn(nameStr);//输出
Serial.print("numberint = ");Serial.printIn(nameint);
}
数组解析
#include <ArduinoJson.h>
void setup() {
Serial.begin(9600);
// 重点1:DynamicJsonDocument对象
const size_t capacity = JSON_ARRAY_SIZE(2) + 2*JSON_OBJECT_SIZE(1) + 60;//数组里由两个对象,每个对象有一个“名值对”
// 重点2:即将解析的json文件
String json = "[{\"name\":\"taichi-maker\"},{\"website\":\"www.taichi-maker.com\"}]";
DynamicJsonDocument doc(capacity);
// 重点3:反序列化数据
deserializeJson(doc, json);
String nameStr = doc[0]["name"].as<String>();//获取数组中第一个名称为“name”的对象
String websiteStr = doc[1]["website"].as<String>();//第几个元素,名称,值
// 通过串口监视器输出解析后的数据信息
Serial.print("nameStr = ");Serial.println(nameStr);
Serial.print("websiteStr = ");Serial.println(websiteStr);
}
void loop() {}
继续如何解析