在 ArduinoJson 中,如何检查创建 JSON 文档时是否发生错误?
In ArduinoJson how can one check if an error occured when creating a JSON document?
在 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"] 和 运行 out of space 当它尝试创建 json_doc["6"].
在 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"] 和 运行 out of space 当它尝试创建 json_doc["6"].