JSON 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ę…

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 pojedyncze wartości, ale również poprzez metodę parseArray można zdekodować arraya zawartego 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

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *