JSON:1.JSON解析和一个代码转换工具
本帖最后由 划句顾 于 2022-2-27 22:19 编辑一些符号的含义:
:用于分隔数据的“名”和“值”
{}标注对象内容
[]标注数组内容
,分隔数据、对象和数组
static/image/hrline/5.gif
DynamicJsonDocument:动态JSON缓冲区
详细可点击这里
1.单一对象JSON解析
代码如下:
/*
* author:LaoGu
* Time:2022/2/23
* fuction:使用arduinojson库解析以下json信息。该json包含一个对象, 对象中有两个数据。
{
"name": "顾嗷呜",
"number": 419
}
*/
#include <ArduinoJson.h>
void setup() {
Serial.begin(9600);
Serial.println("");
/* 一些小知识点:
size_t = unsigned long 无符号长整型
30 是预计运行的内存空间【注:30是自动生成的,我们不用算。有些代码是自动生成的,可以往后滑,看那个生成代码工具】
capacity参数的作用是告诉ESP8266我们所建立的DynamicJsonDocument对象将要占用多大的内存空间。
*/
const size_t capacity = JSON_OBJECT_SIZE(2) + 30;
DynamicJsonDocument doc(capacity);
// 即将解析的json文件
String json = "{\"name\":\"顾嗷呜\",\"number\":419}";
// 反序列化数据解析
deserializeJson(doc, json);
// 获取解析后的数据信息
//as:类型转换-例如将JSON转换为string ,下面就是这样
String nameStr = doc["name"].as<String>();
int numberInt = doc["number"].as<int>();
// 通过串口监视器输出解析后的数据信息
Serial.print("nameStr = ");Serial.println(nameStr);
Serial.print("numberInt = ");Serial.println(numberInt);
}
void loop() {}
static/image/hrline/5.gif
运行结果:
2.JSON数组解析代码如下:
/*
* author:LaoGu
* Time:2022/2/23
* fuction:使用arduinojson库解析以下json信息。该json包含一个数组,数组有两个元素,每个元素都是一个对象,每一个对象都有一个数据。
[
{
"name": "顾嗷呜"
},
{
"number": 419
}
]
注意:数组不能直接存放数据(名值对)。
数组存放元素是有序的(序号起始值0)
*/
#include <ArduinoJson.h>
void setup() {
Serial.begin(9600);
Serial.println("");
// DynamicJsonDocument对象
const size_t capacity = JSON_ARRAY_SIZE(2) + 2*JSON_OBJECT_SIZE(1) + 60;
DynamicJsonDocument doc(capacity);
// 即将解析的json文件
String json = "[{\"name\":\"顾嗷呜\"},{\"number\":419}]";
// 反序列化数据
deserializeJson(doc, json);
String nameStr = doc<b></b>["name"].as<String>();
int numberInt = doc<b></b>["number"].as<int>();
// 通过串口监视器输出解析后的数据信息
Serial.print("nameStr = ");Serial.println(nameStr);
Serial.print("numberInt = ");Serial.println(numberInt);
}
void loop() {}
3.一个快速生成JSON代码的工具:https://arduinojson.org/ 点它
这个是v6【你的arduinoJSON库版本是6的就用这个,如果是5的话就改为v5】
然后按照这样的步骤:
①
static/image/hrline/5.gif
②
static/image/hrline/5.gif
③
static/image/hrline/5.gif
④
static/image/hrline/5.gif
⑤
static/image/hrline/5.gif
就可以啦
static/image/hrline/5.gif
这里是v5,arduinoJSON库版本是5 的这里集合
①
static/image/hrline/5.gif
②
static/image/hrline/5.gif
③
static/image/hrline/5.gif
然后你就可以copy生成的代码到你自己的代码里面
static/image/hrline/5.gif
注意:
static/image/hrline/5.gif
可以看这个视频 的 P15{:10_256:}
https://www.bilibili.com/video/BV1L7411c7jw?p=15
话说,天气真的好冷啊啊啊啊啊,手都冻出血丝了啊啊啊啊{:10_243:}
String json = "{\"name\":\"顾嗷呜\",\"number\":419}";
页:
[1]