理论讲解
-
目的:实现对JSON信息的解析,并通过串口进行输出
-
要用到的库
ArduinoJson6.0
以上的版本,库安装教程 -
这个程序只用到
setup()
函数,没用到loop()
函数 -
@重要函数
Serial.begin();
//串口Serial.print();
//串口deserializeJson(StaticJsonDocument对象,JSON信息);
//反序列化 -
@重要对象及变量
StaticJsonDocument doc
DeserializationError error
-
程序思路详解:
-
程序开始时,打开串口,设置波特率
Serial.begin()
-
输入JSON信息,用一个
String
类型的变量input
进行存储
注意1:Arduino
中的String
要大写,不然会报错
注意2:JSON信息不用手打,可以通过ArduinoJson
官方在线工具生成:打开这个网址
红框内的就是生成的`ArduinoJson的代码形式 -
进入这个网址,获取后面的代码
-
将复制的代码中首行
String input
后面接上步骤二中得到的代码,并去掉注释,结果如下:String input = "{\"name\":\"caixvkun\",\"time\":2.5}"; //JSON信息
-
串口输出函数
Serial.print()
,输出想要的内容 -
若看到串口监视器中显示以下内容,则说明编译成功
-
程序源码
/**********************************************************************
@重要函数
Serial.begin();//串口
Serial.print();//串口
deserializeJson(StaticJsonDocument对象,JSON信息); //反序列化
@重要对象及变量
StaticJsonDocument doc
DeserializationError error
@注意:此程序需用到ArduinoJson6.0版本
@功能:解析JSON信息,并通过串口实现输出
@作者:不会嵌入式的摆烂王
@时间:2022年12月08日
**********************************************************************/
#include <ArduinoJson.h>
void setup() {
Serial.begin(9600); //开启串口通信
String input = "{\"name\":\"caixvkun\",\"time\":2.5}"; //JSON信息
StaticJsonDocument<64> doc; //创建一个StaticJsonDocument类型的doc对象
DeserializationError error = deserializeJson(doc, input); //反序列化
if (error) { //报错信息输出
Serial.print(F("deserializeJson() failed: "));
Serial.println(error.f_str());
return;
}
const char* name = doc["name"]; // "caixvkun"
float time = doc["time"]; // 2.5
//串口输出部分
Serial.print("\n");
Serial.print("name=");
Serial.print(name);
Serial.print("\n");
Serial.print("time=");
Serial.print(time);
}
void loop() {
}