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