Description

JsonArray::add() appends a value to the array pointed by the JsonArray.

If the JsonArray is null/unbound, this function does nothing.

Signatures

bool add(bool value) const;

bool add(float value) const;
bool add(double value) const;

bool add(signed char value) const;
bool add(signed long value) const;
bool add(signed int value) const;
bool add(signed short value) const;
bool add(unsigned char value) const;
bool add(unsigned long value) const;
bool add(unsigned int value) const;
bool add(unsigned short value) const;

bool add(const char (&value)[N]) const;           // stores a pointer
bool add(const char *value) const;                // stores a copy
bool add(const __FlashStringHelper *value) const; // stores a copy

bool add(const String &value) const;       // stores a copy
bool add(const std::string &value) const;  // stores a copy
bool add(const Printable& value);          // stores a copy
bool add(std::string_view value);          // stores a copy

bool add(JsonArray array) const;          // stores a deep copy
bool add(JsonObject object) const;        // stores a deep copy
bool add(JsonVariant variant) const;      // stores a deep copy
bool add(const JsonDocument& doc) const;  // stores a deep copy

bool add(TEnum value) const;  // alias of add(int)
bool add(T value) const;      // calls user-defined function

JsonArray   add<JsonArray>() const;    // adds a new empty array
JsonObject  add<JsonObject>() const;   // adds a new empty object
JsonVariant add<JsonVariant>() const;  // adds a new null variant

Arguments

value: the value to add to the array.

All values are stored by copy, except string literals which are stored by address.

The string copy policy has changed in ArduinoJson 7.3.

Return value

JsonArray::add() return a bool that tells whether the operation was successful or not:

  • true if the value was successfully added.
  • false if there was not enough memory in the JsonDocument.

User-defined types

JsonArray::add() supports user-defined types by calling convertToJson(). For example, to support tm, you must define:

bool convertToJson(const tm& src, JsonVariant dst) {
  char buf[32];
  strftime(buf, sizeof(buf), "%FT%TZ", &src);
  return dst.set(buf);
}

Example

JsonDocument doc;
JsonArray array = doc.to<JsonArray>();
array.add("hello");
array.add(3.14156);
serializeJson(doc, Serial);

will write

["hello",3.14156]

See also

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