c++ - 在 ArduinoJson 中,如何检查创建 JSON 文档时是否发生错误?
问题描述
在 ArduinoJson 库中,很容易创建 JSON 条目,如下所示。
StaticJsonDocument<512> json_doc;
String some_string = "Hello there!";
json_doc["some_string"] = some_string;
问题是检查条目是否成功创建的最佳方法是什么?如果创建的条目随时间发生变化和增长,这将允许实施错误处理并快速找到错误。
解决方案
简单测试一下添加的节点是否有非空值。如果在您尝试创建节点后,该节点的值为空,则该节点未被创建。
这是一个简单的草图来说明这个测试:
#include <ArduinoJson.h>
StaticJsonDocument<100> json_doc;
int nodeNumber = 0;
boolean ranOut = false;
void setup() {
Serial.begin(9600);
}
void loop() {
if (ranOut) return;
String nodeName(nodeNumber++);
String nodeContent = nodeName + " thing";
json_doc[nodeName] = nodeContent;
if (!json_doc[nodeName]) {
ranOut = true;
Serial.print("Ran out at ");
Serial.println(nodeNumber);
}
}
当我在我的 Arduino Uno 上运行这个 Sketch 时,它产生了:
Ran out at 6
也就是说,它成功创建了 json_doc["0"] 到 json_doc["5"] 的节点,并且在尝试创建 json_doc["6"] 时空间不足。
推荐阅读
- logstash - Logstash:根据某些条件重命名嵌套字段
- python - 如何使用flask-restplus的fields.Url进行mongoengine文档查询集?
- highcharts - React highcharts,将图例显示为条形图
- ruby - 如何将 Nokogiri 元素分配给哈希键
- reactjs - react-select focus() 更改后不显示光标
- ios - 我有 UIView 扩展,在这个扩展中我有一个方法 setDarkModeColor 如何在每次初始化视图时调用
- swift - C 中的 FTDI D2XX API 在命令行控制台上工作,但在由 Xcode 和 Swift 编程在 macOS 上构建的应用程序中始终返回零
- opengl - 如何从帧缓冲区翻转数据
- javascript - MongoDB Mongoose 在默认 createdAt 时间戳中按日期分组
- php - 修复 prestashop 错误。在分面搜索处于活动状态时进行排序时,某些产品会消失