JSON for Modern C++  3.7.2

◆ array_t

template<template< typename U, typename V, typename... Args > class ObjectType = std::map, template< typename U, typename... Args > class ArrayType = std::vector, class StringType = std::string, class BooleanType = bool, class NumberIntegerType = std::int64_t, class NumberUnsignedType = std::uint64_t, class NumberFloatType = double, template< typename U > class AllocatorType = std::allocator, template< typename T, typename SFINAE=void > class JSONSerializer = adl_serializer>
using nlohmann::basic_json::array_t = ArrayType<basic_json, AllocatorType<basic_json> >

RFC 7159 describes JSON arrays as follows:

An array is an ordered sequence of zero or more values.

To store objects in C++, a type is defined by the template parameters explained below.

Template Parameters
ArrayTypecontainer type to store arrays (e.g., std::vector or std::list)
AllocatorTypeallocator to use for arrays (e.g., std::allocator)

Default type

With the default values for ArrayType (std::vector) and AllocatorType (std::allocator), the default value for array_t is:

basic_json, // value_type
std::allocator<basic_json> // allocator_type


RFC 7159 specifies:

An implementation may set limits on the maximum depth of nesting.

In this class, the array's limit of nesting is not explicitly constrained. However, a maximum depth of nesting may be introduced by the compiler or runtime environment. A theoretical limit can be queried by calling the max_size function of a JSON array.


Arrays are stored as pointers in a basic_json type. That is, for any access to array values, a pointer of type array_t* must be dereferenced.

See also
object_t – type for an object value
version 1.0.0

Definition at line 15072 of file json.hpp.

basic_json(const value_t v)
create an empty value with a given type
Definition: json.hpp:15754