3-4 解析json (taichi-maker )

 单一对象的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() {}

继续如何解析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值