JSON do przesyłu danych w Arduino
JSON zawsze wydawał mi się domeną aplikacji webowych, jako metoda przesyłania odpowiedzi z serwera do aplikacji. Nigdy nie myślałem, że będę go potrzebował w swoich projektach, aż tu proszę… można w Arduino.
Na szczęście jest biblioteka do Arduino, która doskonale się sprawdza i działa dobrze… choć dekodowanie mogłoby być szybsze. Mam tu na myśli ArduinoJson.h które koduje, dekoduje i wiele innych.
Na dziś dekodowanie:
#include <ArduinoJson.h>
void setup() {
Serial.begin(115200);
StaticJsonBuffer<300> jsonBuffer;
char json[] = "{\"typ\":\"autostart\",\"name\":garage,\"data\":[{\"title\":\"Lampa\",\"typ\":\"2\"},{\"title\":\"Brama\",\"typ\":\"3\"},{\"title\":\"Piec\",\"typ\":\"1\"}]}";
JsonObject& root = jsonBuffer.parseObject(json);
if (!root.success()) {
Serial.println("parsowanie nieudane");
return;
}
const char* typ = root["typ"];
const char* device = root["name"];
String buttons = root["data"];
jsonBuffer.clear();
// Print values.
Serial.println(typ);
Serial.println(device);
Serial.println(buttons);
JsonArray& buttonsDetails = jsonBuffer.parseArray(buttons);
jsonBuffer.clear();
Serial.println("Array w json");
for (JsonVariant value : buttonsDetails) {
String title = value["title"].as<String>();
String typ = value["typ"].as<String>();
Serial.println(title);
Serial.println(typ);
Serial.println("===");
}
}
void loop() {
// not used in this example
}
Przykład jest o tyle fajny, że pokazuje nie tylko jak zdekodować jsona i wyciągnąć z niego pojedyńcze wartości. Również przedstawia jak poprzez metodę parseArray można zdekodować arraya zawartego w jsonie. Nie pozostaje nic więcej, jak w pętli for przypisać konkretne wartości do swojej tablicy czy obiektu i wykorzystywać w dalszej logice.
Opublikowano: 10 lipca, 2020 przez Pan z Pogodna
