在 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"].