Description

In ArduinoJson, an array is an ordered collection of values. A JsonArray is a reference to an array. The array itself resides in a JsonDocument.

Because the JsonArray is just a reference, you need a JsonDocument to create a array.

Constness

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

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

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

Computing the size

The macro JSON_ARRAY_SIZE(n) returns the number of bytes required to store an array that contains n elements. Use this macro to calculate the capacity of the JsonDocument.

This value only includes the size of the data structures that represent the array; if you have nested objects or strings, you need to add their sizes as well. You can use the ArduinoJson Assistant to generate the complete expression.

Example

Create an array and serialize it

// compute the required size
const size_t CAPACITY = JSON_ARRAY_SIZE(3);

// allocate the memory for the document
StaticJsonDocument<CAPACITY> doc;

// create an empty array
JsonArray array = doc.to<JsonArray>();

// add some values
array.add("hello");
array.add(42);
array.add(3.14);

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

Deserialize an array

// compute the required size
const size_t CAPACITY = JSON_ARRAY_SIZE(3);

// allocate the memory for the document
StaticJsonDocument<CAPACITY> doc;

// parse a JSON array
deserializeJson(doc, "[1,2,3]");

// extract the values
JsonArray array = doc.as<JsonArray>();
for(JsonVariant v : array) {
    Serial.println(v.as<int>());
}

Member functions

See also

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