ArduinoJson 7 endringer
https://arduinojson.org/v7/how-to/upgrade-from-v6/
I ArduinoJson 7 har en del funksjoner blitt fjernet/erstattet med andre funksjoner. Under er en oversikt:
Funksjoner som er fjernet i V7 | Erstatning i V7 |
---|---|
StaticJsonDocument | JsonDocument |
DynamicJsonDocument | JsonDocument |
JsonDocument::capacity() | JsonDocument::overflowed() |
createNestedArray() | add<JsonArray>() / to<JsonArray>() |
createNestedObject() | add<JsonObject>() / to<JsonObject>() |
containsKey() | is<T>() |
memoryUsage() | - |
garbageCollect() | - |
Eksempler
Enkelt eksempel med et dokument uten sub-objekter
#include <ArduinoJson.h>
// Sett en stor nok størrelse til å lagre all JSON-data + litt sikkerhetsmargin
char jsonSystemString[512];
// JSON-dokumentet
JsonDocument JSONdocSystem;
void updateJSON() {
// Tøm hele dokumentet
JSONdocSystem.clear();
// Sett inn noen verdier
JSONdocSystem["heap_free_bytes"] = esp_get_free_heap_size();
JSONdocSystem["rssi"] = WiFi.RSSI();
// Sjekk for overflow
size_t jsonSize = measureJson(JSONdocSystem);
if(jsonSize > sizeof(jsonSystemString)) {
strncpy(jsonSystemString, "{\"error\":\"Overflow!\"}", sizeof(jsonSystemString));
} else {
// Konverter JSON-dokumentet til en char-array (jsonSystemString)
serializeJson(JSONdocSystem, jsonSystemString);
}
// Print JSON til Serial Monitor
Serial.println(jsonSystemString);
// Eller send som en webserver respons
server.send(200, "application/json", jsonSystemString);
}
Eksempel på dokument med sub-objekter og sub-arrays
#include <ArduinoJson.h>
// Sett en stor nok størrelse til å lagre all JSON-data + litt sikkerhetsmargin
char jsonLogsString[3072];
// JSON-dokumentet
JsonDocument JSONdocLogs;
void getLogsAsWebResponse() {
// Tøm hele dokumentet
JSONdocLogs.clear();
// Legg til 5 JSON-objekter i JSON-dokumentet med tilfeldig data
for(size_t i = 0; i < 5; i++) {
// Nytt JSON-objekt
JsonObject logObj = JSONdocLogs.add<JsonObject>();
// Sett inn noen verdier
logObj["index"] = i;
logObj["datetime"] = millis();
logObj["message"] = "Hallo!";
// Kan også lage sub-ojekt i andre objekter:
JsonObject subLogObj = JSONdocLogs["subObj"].to<JsonObject>();
subLogObj["index"] = "en verdi";
// Eller array i andre objekter:
JsonArray subLogArr = JSONdocLogs["subArr"].to<JsonArray>();
subLogArr.add("en verdi");
}
// Sjekk for overflow
size_t jsonSize = measureJson(JSONdocLogs);
if(jsonSize > sizeof(jsonLogsString)) {
strncpy(jsonLogsString, "{\"error\":\"Overflow\"}", sizeof(jsonLogsString));
} else {
// Konverter JSON-dokumentet til en char-array (jsonLogsString)
serializeJson(JSONdocLogs, jsonLogsString);
}
// Send respons til webserver
server.send(200, "application/json", jsonLogsString);
}