JsonVariant is a reference to a value in a JsonDocument. It supports all types allowed by JSON:

  • boolean
  • integer
  • floating point
  • string
  • array
  • object

JsonVariant doesn’t own the value: it only points to it. The value belongs to the JsonDocument.


You’ll see that most member functions of JsonVariant are const. These methods do not modify the instance, but they may alter the value pointed by the JsonVariant.

As we said, a JsonVariant is a reference; the const-ness of the member functions refers to the reference object, not to the value.

ArduinoJson also supports a read-only reference type named JsonVariantConst. It’s similar to JsonVariant, except it doesn’t allow modifying the value.


Create a variant and serialize it

// create the JsonDocument
JsonDocument doc;

// create a variant
JsonVariant variant =<JsonVariant>();

// serialize the object and send the result to Serial
serializeJson(doc, Serial);

Deserialize a variant

// deserialize the value
JsonDocument doc;
deserializeJson(doc, "42");

// extract the data
JsonVariant variant =<JsonVariant>();
int value =<int>();

Member functions

JsonVariant also supports the comparison operators ==, !=, <, <=, >, and >=.

See also