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() {}

继续如何解析

/********************************************************************** ----------------------------------------------------------------------- 本示例程序为太极创客团队制作的《零基础入门学用物联网》中示例程序。 该教程为对物联网开发感兴趣的朋友所设计和制作。如需了解更多该教程的信息,请参考以下网页: http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/ ***********************************************************************/ #include <ESP8266WiFi.h> #include <ESP8266WiFiMulti.h> #include <ESP8266WebServer.h> #include <FS.h> ESP8266WiFiMulti wifiMulti; // 建立ESP8266WiFiMulti对象 ESP8266WebServer esp8266_server(80);// 建立ESP8266WebServer对象,该对象用于响应HTTP请求。监听端口(80) void setup(void){ Serial.begin(9600); Serial.println(""); pinMode(D4, OUTPUT); // 初始化NodeMCU控制板载LED引脚为OUTPUT wifiMulti.addAP("dajiating", "DJT13619252979");// 将需要连接的一系列WiFi ID和密码输入这里 wifiMulti.addAP("ssid_from_AP_2", "your_password_for_AP_2"); // ESP8266-NodeMCU再启动后会扫描当前网络 wifiMulti.addAP("ssid_from_AP_3", "your_password_for_AP_3"); // 环境查找是否有这里列出的WiFi ID。如果有 Serial.println("Connecting ..."); // 则尝试使用此处存储的密码进行连接。 int i = 0; while (wifiMulti.run() != WL_CONNECTED) { // 尝试进行wifi连接。 delay(1000); Serial.print(i++); Serial.print(&#39; &#39;); } // WiFi连接成功后将通过串口监视器输出连接成功信息 Serial.println(&#39;\n&#39;); Serial.print("Connected to "); Serial.println(WiFi.SSID()); // 通过串口监视器输出连接的WiFi名称 Serial.print("IP address:\t"); Serial.println(WiFi.localIP()); // 通过串口监视器输出ESP8266-NodeMCU的IP if(SPIFFS.begin()){ // 启动闪存文件系统 Serial.println("SPIFFS Started."); } else { Serial.println("SPIFFS Failed to Start."); } //初始化网络服务器 esp8266_server.on("/LED-Control", handleLEDControl); esp8266_server.onNotFound(handleUserRequest); // 处理其它网络请求 // 启动网站服务 esp8266_server.begin(); Serial.println("HTTP server started"); } void loop(void){ esp8266_server.handleClient(); //处理网络请求 }
03-26
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值