esp8266 json解析 串口
时间: 2023-11-25 18:06:08 浏览: 116
以下是ESP8266通过串口解析JSON的示例代码:
```arduino
#include <ArduinoJson.h>
#include <ESP8266WiFi.h>
void setup() {
Serial.begin(115200);
delay(100);
// 读取存储在闪存中的JSON文件
File configFile = SPIFFS.open("/wifi_config.json", "r");
if (!configFile) {
Serial.println("Failed to open config file");
return;
}
// 解析JSON文件
size_t size = configFile.size();
std::unique_ptr<char[]> buf(new char[size]);
configFile.readBytes(buf.get(), size);
DynamicJsonDocument doc(1024);
auto error = deserializeJson(doc, buf.get());
if (error) {
Serial.println("Failed to parse config file");
return;
}
// 从JSON对象中获取WiFi连接信息
const char* ssid = doc["ssid"];
const char* password = doc["password"];
// 连接WiFi
WiFi.begin(ssid, password);
Serial.print("Connecting to ");
Serial.print(ssid);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println(" connected");
}
void loop() {
// 等待串口输入
while (!Serial.available()) {
delay(100);
}
// 读取串口输入
String input = Serial.readStringUntil('\n');
// 解析JSON
DynamicJsonDocument doc(1024);
auto error = deserializeJson(doc, input);
if (error) {
Serial.println("Failed to parse input");
return;
}
// 从JSON对象中获取数据
const char* name = doc["name"];
int age = doc["age"];
// 输出数据
Serial.print("Name: ");
Serial.println(name);
Serial.print("Age: ");
Serial.println(age);
}
```
该示例代码通过SPIFFS文件系统读取存储在ESP8266闪存中的JSON文件,并使用ArduinoJson库解析JSON信息。然后,它等待串口输入,并解析输入的JSON信息。最后,它从JSON对象中获取数据并将其输出到串口。
阅读全文