basic_json

Defined in header <json.hpp>

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,
    class BinaryType = std::vector<std::uint8_t>
>
class basic_json;

Specializations

  • json - default specialization
  • ordered_json - specialization that maintains the insertion order of object keys

Template parameters

Template parameterDescriptionDerived type
ObjectTypetype for JSON objectsobject_t
ArrayTypetype for JSON arraysarray_t
StringTypetype for JSON strings and object keysstring_t
BooleanTypetype for JSON booleansboolean_t
NumberIntegerTypetype for JSON integer numbersnumber_integer_t
NumberUnsignedTypetype for JSON unsigned integer numbersnumber_unsigned_t
NumberFloatTypetype for JSON floating-point numbersnumber_float_t
AllocatorTypetype of the allocator to use
JSONSerializerthe serializer to resolve internal calls to to_json() and from_json()json_serializer
BinaryTypetype for binary arraysbinary_t

Iterator invalidation

Todo

Member types

Exceptions

  • exception - general exception of the basic_json class
    • parse_error - exception indicating a parse error
    • invalid_iterator - exception indicating errors with iterators
    • type_error - exception indicating executing a member function with a wrong type
    • out_of_range - exception indicating access out of the defined range
    • other_error - exception indicating other library errors

Container types

TypeDefinition
value_type#!cpp basic_json
reference#!cpp value_type&
const_reference#!cpp const value_type&
difference_type#!cpp std::ptrdiff_t
size_type#!cpp std::size_t
allocator_type#!cpp AllocatorType<basic_json>
pointer#!cpp std::allocator_traits<allocator_type>::pointer
const_pointer#!cpp std::allocator_traits<allocator_type>::const_pointer
iteratorLegacyBidirectionalIterator
const_iteratorconstant LegacyBidirectionalIterator
reverse_iteratorreverse iterator, derived from iterator
const_reverse_iteratorreverse iterator, derived from const_iterator
iteration_proxyhelper type for items function

JSON value data types

Parser callback

Member functions

Object inspection

Functions to inspect the type of a JSON value.

Value access

Direct access to the stored value of a JSON value.

Element access

Access to the JSON value

  • at - access specified element with bounds checking
  • operator[] - access specified element
  • value - access specified object element with default value
  • front - access the first element
  • back - access the last element

Lookup

  • find - find an element in a JSON object
  • count - returns the number of occurrences of a key in a JSON object
  • contains - check the existence of an element in a JSON object

Iterators

  • begin - returns an iterator to the first element
  • cbegin - returns a const iterator to the first element
  • end - returns an iterator to one past the last element
  • cend - returns a const iterator to one past the last element
  • rbegin - returns an iterator to the reverse-beginning
  • rend - returns an iterator to the reverse-end
  • crbegin - returns a const iterator to the reverse-beginning
  • crend - returns a const iterator to the reverse-end
  • items - wrapper to access iterator member functions in range-based for

Capacity

  • empty - checks whether the container is empty
  • size - returns the number of elements
  • max_size - returns the maximum possible number of elements

Modifiers

  • clear - clears the contents
  • push_back - add a value to an array/object
  • operator+= - add a value to an array/object
  • emplace_back - add a value to an array
  • emplace - add a value to an object if key does not exist
  • erase - remove elements
  • insert - inserts elements
  • update - updates a JSON object from another object, overwriting existing keys
  • swap - exchanges the values

Lexicographical comparison operators

Serialization / Dumping

  • dump - serialization
  • to_string - user-defined to_string function for JSON values

Deserialization / Parsing

  • parse (static) - deserialize from a compatible input
  • accept (static) - check if the input is valid JSON
  • sax_parse (static) - generate SAX events

JSON Pointer functions

  • flatten - return flattened JSON value
  • unflatten - unflatten a previously flattened JSON value

JSON Patch functions

  • patch - applies a JSON patch
  • diff (static) - creates a diff as a JSON patch

JSON Merge Patch functions

Static functions

  • meta - returns version information on the library
  • get_allocator - returns the allocator associated with the container

Binary formats

  • from_bson (static) - create a JSON value from an input in BSON format
  • from_cbor (static) - create a JSON value from an input in CBOR format
  • from_msgpack (static) - create a JSON value from an input in MessagePack format
  • from_ubjson (static) - create a JSON value from an input in UBJSON format
  • to_bson (static) - create a BSON serialization of a given JSON value
  • to_cbor (static) - create a CBOR serialization of a given JSON value
  • to_msgpack (static) - create a MessagePack serialization of a given JSON value
  • to_ubjson (static) - create a UBJSON serialization of a given JSON value

Non-member functions

  • operator<<(std::ostream&) - serialize to stream
  • operator>>(std::istream&) - deserialize from stream

Literals

Helper classes