Как в ArduinoJson проверить, возникла ли ошибка при создании документа JSON?
В библиотеке ArduinoJson легко создавать записи JSON, как показано ниже.
StaticJsonDocument<512> json_doc;
String some_string = "Hello there!";
json_doc["some_string"] = some_string;
Вопрос в том, как лучше всего проверить, успешно ли создана запись? Это позволит реализовать обработку ошибок и быстро найти ошибку, если создаваемые записи меняются и со временем растут.
1 ответ
Просто проверьте, имеет ли добавленный узел ненулевое значение. Если после того, как вы попытались создать узел, этот узел имеет нулевое значение, узел не был создан.
Вот простой набросок для иллюстрации этого теста:
#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);
}
}
Когда я запустил этот Sketch на своем Arduino Uno, он произвел:
Ran out at 6
То есть он создал успешно созданные узлы с json_doc["0"] по json_doc["5"] и исчерпал пространство при попытке создать json_doc["6"].