Description

This example shows the different ways you can use Flash strings with ArduinoJson.

Use Flash strings sparingly, because ArduinoJson duplicates them in the JsonBuffer. Prefer plain old char*, as they are more efficient in term of code size, speed, and memory usage.

Source code

// ArduinoJson - arduinojson.org
// Copyright Benoit Blanchon 2014-2018
// MIT License

#include <ArduinoJson.h>

void setup() {
  DynamicJsonBuffer jsonBuffer;

  // You can use a Flash String as your JSON input.
  // WARNING: the content of the Flash String will be duplicated in the
  // JsonBuffer.
  JsonObject& root =
      jsonBuffer.parseObject(F("{\"sensor\":\"gps\",\"time\":1351824120,"
                               "\"data\":[48.756080,2.302038]}"));

  // You can use a Flash String to get an element of a JsonObject
  // No duplication is done.
  long time = root[F("time")];

  // You can use a Flash String to set an element of a JsonObject
  // WARNING: the content of the Flash String will be duplicated in the
  // JsonBuffer.
  root[F("time")] = time;

  // You can set a Flash String to a JsonObject or JsonArray:
  // WARNING: the content of the Flash String will be duplicated in the
  // JsonBuffer.
  root["sensor"] = F("gps");

  // It works with RawJson too:
  root["sensor"] = RawJson(F("\"gps\""));

  // You can compare the content of a JsonVariant to a Flash String
  if (root["sensor"] == F("gps")) {
    // ...
  }
}

void loop() {
  // not used in this example
}

Classes used in this example

Functions used in this example

Keep learning

Mastering ArduinoJson

Mastering ArduinoJson begins with a quick C++ course that explains how your microcontroller stores strings in memory, so you can perfectly understand what happens behind the scenes.

The chapter “Inside ArduinoJson” explains what a JsonBuffer is and why it is essential for the performance of the library. This chapter also describes how StaticJsonBuffer and DynamicJsonBuffer work, and how to choose between them.

Global warming stripes by Professor Ed Hawkins (University of Reading)