esp8266 - 如何使用 ArduinoJSON 6 从 ESP8266 的 SPIFFS 读取 json 文件?
问题描述
我目前正在使用 ESP8266 (ESP-12E) 开展一个项目,我需要将信息存储在一个 json 文件中(对我来说,通过 Web 界面访问更方便,比 EEPROM 更容易管理)。
我的问题如下:我使用的是最新版本的 ArduinoJSON (6),但除了在他们的网站上,我没有看到很多示例,并且此代码对我不起作用:
void DeleteCycle(size_t idtodelete) {
File schedules = SPIFFS.open("/schedules.json", "r");
if(schedules && schedules.size()) {
DynamicJsonDocument schedulesjson(1300);
DeserializationError err = deserializeJson(schedulesjson, schedules);
Serial.println(err.c_str());
if (err) {
Serial.print(F("deserializeJson() failed with code "));
Serial.println(err.c_str());
}
else {
JsonArray array = schedulesjson.to<JsonArray>();
// array.remove(0);
serializeJson(array, Serial);
}
schedules.close();
}
else {
Serial.println("Failed to read file.");
}
}
我猜问题是 JsonArray,它是空的!但我的 JsonDocument 不是,因为如果我这样做
JsonObject obj = schedulesjson[0];
String test = obj["name"];
Serial.println("Test : " + test);
我在索引 0 处获得数组的第一个键值(名称)
这是我在 StackOverflow 上的第一篇文章,希望我做得对,在此先感谢您的帮助!
解决方案
我回答自己是因为我找到了解决问题的方法:写作
schedulesjson.to<JsonArray>();
清空json文档,所以必须放在前面
DeserializationError err = deserializeJson(schedulesjson, schedules);
推荐阅读
- html - 如何让 div 填满整个屏幕(砌体/Pinterest)布局
- php - 在客户端遍历多维数组数据时,在 php 中填充模板视图的最简洁方法是什么?
- c# - UWP 将 IF 语句转换为 NavigationViewItems 的 foreach 循环
- c# - 异步读取图像文件
- c - printf 的问题 - 不打印 put 整数值
- r - 表格不在 Rmd 笔记本中编织和打印?
- google-cloud-firestore - 在匹配规则之外的函数中使用 get() 的 Firebase 安全规则
- python - 从python上的dict获取集合运算符
- javascript - 通过复制所有自己的属性来克隆任何 javascript 对象
- rubygems - Gem - 对等方重置连接 - SSL_connect