Description

JsonVariant::set() replaces the value stored in the variant. The variant may change its type if necessary.

Instead of this function, use JsonArray::operator[] or JsonObject::operator[] because they offer a more intuitive syntax

Signatures

bool set(bool value) const;

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

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

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

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

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

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

Arguments

value: the new value of the variant, it can be any type supported by ArduinoJson or a user-defined type if you define custom converters.

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

JsonVariant::set() returns a bool that tells whether the operation was successful or not:

  • true if the value operation was successful.
  • false if there was not enough room in the JsonDocument.

User-defined types

JsonVariant::set() 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;
bool success = doc["hello"].set("world");
serializeJson(doc, Serial);

The above program produces the following output:

{"hello":"world"}

See also

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