|
Constructors of class basic_json, copy/move constructor, copy assignment, static functions creating objects, and the destructor.
|
static basic_json | array (initializer_list_t init={}) |
| explicitly create an array from an initializer list More...
|
|
static basic_json | object (initializer_list_t init={}) |
| explicitly create an object from an initializer list More...
|
|
| basic_json (const value_t v) |
| create an empty value with a given type More...
|
|
| basic_json (std::nullptr_t=nullptr) noexcept |
| create a null object More...
|
|
template<typename CompatibleType , typename U = detail::uncvref_t<CompatibleType>, detail::enable_if_t< not detail::is_basic_json< U >::value and detail::is_compatible_type< basic_json_t, U >::value, int > = 0> |
| basic_json (CompatibleType &&val) noexcept(noexcept(JSONSerializer< U >::to_json(std::declval< basic_json_t & >(), std::forward< CompatibleType >(val)))) |
| create a JSON value More...
|
|
template<typename BasicJsonType , detail::enable_if_t< detail::is_basic_json< BasicJsonType >::value and not std::is_same< basic_json, BasicJsonType >::value, int > = 0> |
| basic_json (const BasicJsonType &val) |
| create a JSON value from an existing one More...
|
|
| basic_json (initializer_list_t init, bool type_deduction=true, value_t manual_type=value_t::array) |
| create a container (array or object) from an initializer list More...
|
|
| basic_json (size_type cnt, const basic_json &val) |
| construct an array with count copies of given value More...
|
|
template<class InputIT , typename std::enable_if< std::is_same< InputIT, typename basic_json_t::iterator >::value or std::is_same< InputIT, typename basic_json_t::const_iterator >::value, int >::type = 0> |
| basic_json (InputIT first, InputIT last) |
| construct a JSON container given an iterator range More...
|
|
| basic_json (const basic_json &other) |
| copy constructor More...
|
|
| basic_json (basic_json &&other) noexcept |
| move constructor More...
|
|
basic_json & | operator= (basic_json other) noexcept(std::is_nothrow_move_constructible< value_t >::value and std::is_nothrow_move_assignable< value_t >::value and std::is_nothrow_move_constructible< json_value >::value and std::is_nothrow_move_assignable< json_value >::value) |
| copy assignment More...
|
|
| ~basic_json () noexcept |
| destructor More...
|
|
|
Functions to inspect the type of a JSON value.
|
string_t | dump (const int indent=-1, const char indent_char=' ', const bool ensure_ascii=false, const error_handler_t error_handler=error_handler_t::strict) const |
| serialization More...
|
|
constexpr value_t | type () const noexcept |
| return the type of the JSON value (explicit) More...
|
|
constexpr bool | is_primitive () const noexcept |
| return whether type is primitive More...
|
|
constexpr bool | is_structured () const noexcept |
| return whether type is structured More...
|
|
constexpr bool | is_null () const noexcept |
| return whether value is null More...
|
|
constexpr bool | is_boolean () const noexcept |
| return whether value is a boolean More...
|
|
constexpr bool | is_number () const noexcept |
| return whether value is a number More...
|
|
constexpr bool | is_number_integer () const noexcept |
| return whether value is an integer number More...
|
|
constexpr bool | is_number_unsigned () const noexcept |
| return whether value is an unsigned integer number More...
|
|
constexpr bool | is_number_float () const noexcept |
| return whether value is a floating-point number More...
|
|
constexpr bool | is_object () const noexcept |
| return whether value is an object More...
|
|
constexpr bool | is_array () const noexcept |
| return whether value is an array More...
|
|
constexpr bool | is_string () const noexcept |
| return whether value is a string More...
|
|
constexpr bool | is_discarded () const noexcept |
| return whether value is discarded More...
|
|
constexpr | operator value_t () const noexcept |
| return the type of the JSON value (implicit) More...
|
|
|
Direct access to the stored value of a JSON value.
|
template<typename BasicJsonType , detail::enable_if_t< std::is_same< typename std::remove_const< BasicJsonType >::type, basic_json_t >::value, int > = 0> |
basic_json | get () const |
| get special-case overload More...
|
|
template<typename BasicJsonType , detail::enable_if_t< not std::is_same< BasicJsonType, basic_json >::value and detail::is_basic_json< BasicJsonType >::value, int > = 0> |
BasicJsonType | get () const |
| get special-case overload More...
|
|
template<typename ValueTypeCV , typename ValueType = detail::uncvref_t<ValueTypeCV>, detail::enable_if_t< not detail::is_basic_json< ValueType >::value and detail::has_from_json< basic_json_t, ValueType >::value and not detail::has_non_default_from_json< basic_json_t, ValueType >::value, int > = 0> |
ValueType | get () const noexcept(noexcept(JSONSerializer< ValueType >::from_json(std::declval< const basic_json_t & >(), std::declval< ValueType & >()))) |
| get a value (explicit) More...
|
|
template<typename ValueTypeCV , typename ValueType = detail::uncvref_t<ValueTypeCV>, detail::enable_if_t< not std::is_same< basic_json_t, ValueType >::value and detail::has_non_default_from_json< basic_json_t, ValueType >::value, int > = 0> |
ValueType | get () const noexcept(noexcept(JSONSerializer< ValueType >::from_json(std::declval< const basic_json_t & >()))) |
| get a value (explicit); special case More...
|
|
template<typename ValueType , detail::enable_if_t< not detail::is_basic_json< ValueType >::value and detail::has_from_json< basic_json_t, ValueType >::value, int > = 0> |
ValueType & | get_to (ValueType &v) const noexcept(noexcept(JSONSerializer< ValueType >::from_json(std::declval< const basic_json_t & >(), v))) |
| get a value (explicit) More...
|
|
template<typename T , std::size_t N, typename Array = T (&)[N], detail::enable_if_t< detail::has_from_json< basic_json_t, Array >::value, int > = 0> |
Array | get_to (T(&v)[N]) const noexcept(noexcept(JSONSerializer< Array >::from_json(std::declval< const basic_json_t & >(), v))) |
|
template<typename PointerType , typename std::enable_if< std::is_pointer< PointerType >::value, int >::type = 0> |
auto | get_ptr () noexcept -> decltype(std::declval< basic_json_t & >().get_impl_ptr(std::declval< PointerType >())) |
| get a pointer value (implicit) More...
|
|
template<typename PointerType , typename std::enable_if< std::is_pointer< PointerType >::value and std::is_const< typename std::remove_pointer< PointerType >::type >::value, int >::type = 0> |
constexpr auto | get_ptr () const noexcept -> decltype(std::declval< const basic_json_t & >().get_impl_ptr(std::declval< PointerType >())) |
| get a pointer value (implicit) More...
|
|
template<typename PointerType , typename std::enable_if< std::is_pointer< PointerType >::value, int >::type = 0> |
auto | get () noexcept -> decltype(std::declval< basic_json_t & >().template get_ptr< PointerType >()) |
| get a pointer value (explicit) More...
|
|
template<typename PointerType , typename std::enable_if< std::is_pointer< PointerType >::value, int >::type = 0> |
constexpr auto | get () const noexcept -> decltype(std::declval< const basic_json_t & >().template get_ptr< PointerType >()) |
| get a pointer value (explicit) More...
|
|
template<typename ReferenceType , typename std::enable_if< std::is_reference< ReferenceType >::value, int >::type = 0> |
ReferenceType | get_ref () |
| get a reference value (implicit) More...
|
|
template<typename ReferenceType , typename std::enable_if< std::is_reference< ReferenceType >::value and std::is_const< typename std::remove_reference< ReferenceType >::type >::value, int >::type = 0> |
ReferenceType | get_ref () const |
| get a reference value (implicit) More...
|
|
template<typename ValueType , typename std::enable_if< not std::is_pointer< ValueType >::value and not std::is_same< ValueType, detail::json_ref< basic_json >>::value and not std::is_same< ValueType, typename string_t::value_type >::value and not detail::is_basic_json< ValueType >::value and not std::is_same< ValueType, std::initializer_list< typename string_t::value_type >>::value and not std::is_same< ValueType, typename std::string_view >::value and detail::is_detected< detail::get_template_function, const basic_json_t &, ValueType >::value, int >::type = 0> |
| operator ValueType () const |
| get a value (implicit) More...
|
|
|
Access to the JSON value.
|
reference | at (size_type idx) |
| access specified array element with bounds checking More...
|
|
const_reference | at (size_type idx) const |
| access specified array element with bounds checking More...
|
|
reference | at (const typename object_t::key_type &key) |
| access specified object element with bounds checking More...
|
|
const_reference | at (const typename object_t::key_type &key) const |
| access specified object element with bounds checking More...
|
|
reference | operator[] (size_type idx) |
| access specified array element More...
|
|
const_reference | operator[] (size_type idx) const |
| access specified array element More...
|
|
reference | operator[] (const typename object_t::key_type &key) |
| access specified object element More...
|
|
const_reference | operator[] (const typename object_t::key_type &key) const |
| read-only access specified object element More...
|
|
template<typename T > |
reference | operator[] (T *key) |
| access specified object element More...
|
|
template<typename T > |
const_reference | operator[] (T *key) const |
| read-only access specified object element More...
|
|
template<class ValueType , typename std::enable_if< std::is_convertible< basic_json_t, ValueType >::value, int >::type = 0> |
ValueType | value (const typename object_t::key_type &key, const ValueType &default_value) const |
| access specified object element with default value More...
|
|
string_t | value (const typename object_t::key_type &key, const char *default_value) const |
| overload for a default value of type const char* More...
|
|
template<class ValueType , typename std::enable_if< std::is_convertible< basic_json_t, ValueType >::value, int >::type = 0> |
ValueType | value (const json_pointer &ptr, const ValueType &default_value) const |
| access specified object element via JSON Pointer with default value More...
|
|
string_t | value (const json_pointer &ptr, const char *default_value) const |
| overload for a default value of type const char* More...
|
|
reference | front () |
| access the first element More...
|
|
const_reference | front () const |
| access the first element More...
|
|
reference | back () |
| access the last element More...
|
|
const_reference | back () const |
| access the last element More...
|
|
template<class IteratorType , typename std::enable_if< std::is_same< IteratorType, typename basic_json_t::iterator >::value or std::is_same< IteratorType, typename basic_json_t::const_iterator >::value, int >::type = 0> |
IteratorType | erase (IteratorType pos) |
| remove element given an iterator More...
|
|
template<class IteratorType , typename std::enable_if< std::is_same< IteratorType, typename basic_json_t::iterator >::value or std::is_same< IteratorType, typename basic_json_t::const_iterator >::value, int >::type = 0> |
IteratorType | erase (IteratorType first, IteratorType last) |
| remove elements given an iterator range More...
|
|
size_type | erase (const typename object_t::key_type &key) |
| remove element from a JSON object given a key More...
|
|
void | erase (const size_type idx) |
| remove element from a JSON array given an index More...
|
|
|
void | clear () noexcept |
| clears the contents More...
|
|
void | push_back (basic_json &&val) |
| add an object to an array More...
|
|
reference | operator+= (basic_json &&val) |
| add an object to an array More...
|
|
void | push_back (const basic_json &val) |
| add an object to an array More...
|
|
reference | operator+= (const basic_json &val) |
| add an object to an array More...
|
|
void | push_back (const typename object_t::value_type &val) |
| add an object to an object More...
|
|
reference | operator+= (const typename object_t::value_type &val) |
| add an object to an object More...
|
|
void | push_back (initializer_list_t init) |
| add an object to an object More...
|
|
reference | operator+= (initializer_list_t init) |
| add an object to an object More...
|
|
template<class... Args> |
reference | emplace_back (Args &&... args) |
| add an object to an array More...
|
|
template<class... Args> |
std::pair< iterator, bool > | emplace (Args &&... args) |
| add an object to an object if key does not exist More...
|
|
template<typename... Args> |
iterator | insert_iterator (const_iterator pos, Args &&... args) |
|
iterator | insert (const_iterator pos, const basic_json &val) |
| inserts element More...
|
|
iterator | insert (const_iterator pos, basic_json &&val) |
| inserts element More...
|
|
iterator | insert (const_iterator pos, size_type cnt, const basic_json &val) |
| inserts elements More...
|
|
iterator | insert (const_iterator pos, const_iterator first, const_iterator last) |
| inserts elements More...
|
|
iterator | insert (const_iterator pos, initializer_list_t ilist) |
| inserts elements More...
|
|
void | insert (const_iterator first, const_iterator last) |
| inserts elements More...
|
|
void | update (const_reference j) |
| updates a JSON object from another object, overwriting existing keys More...
|
|
void | update (const_iterator first, const_iterator last) |
| updates a JSON object from another object, overwriting existing keys More...
|
|
void | swap (reference other) noexcept(std::is_nothrow_move_constructible< value_t >::value and std::is_nothrow_move_assignable< value_t >::value and std::is_nothrow_move_constructible< json_value >::value and std::is_nothrow_move_assignable< json_value >::value) |
| exchanges the values More...
|
|
void | swap (array_t &other) |
| exchanges the values More...
|
|
void | swap (object_t &other) |
| exchanges the values More...
|
|
void | swap (string_t &other) |
| exchanges the values More...
|
|
|
bool | operator== (const_reference lhs, const_reference rhs) noexcept |
| comparison: equal More...
|
|
template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0> |
bool | operator== (const_reference lhs, const ScalarType rhs) noexcept |
| comparison: equal More...
|
|
template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0> |
bool | operator== (const ScalarType lhs, const_reference rhs) noexcept |
| comparison: equal More...
|
|
bool | operator!= (const_reference lhs, const_reference rhs) noexcept |
| comparison: not equal More...
|
|
template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0> |
bool | operator!= (const_reference lhs, const ScalarType rhs) noexcept |
| comparison: not equal More...
|
|
template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0> |
bool | operator!= (const ScalarType lhs, const_reference rhs) noexcept |
| comparison: not equal More...
|
|
bool | operator< (const_reference lhs, const_reference rhs) noexcept |
| comparison: less than More...
|
|
template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0> |
bool | operator< (const_reference lhs, const ScalarType rhs) noexcept |
| comparison: less than More...
|
|
template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0> |
bool | operator< (const ScalarType lhs, const_reference rhs) noexcept |
| comparison: less than More...
|
|
bool | operator<= (const_reference lhs, const_reference rhs) noexcept |
| comparison: less than or equal More...
|
|
template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0> |
bool | operator<= (const_reference lhs, const ScalarType rhs) noexcept |
| comparison: less than or equal More...
|
|
template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0> |
bool | operator<= (const ScalarType lhs, const_reference rhs) noexcept |
| comparison: less than or equal More...
|
|
bool | operator> (const_reference lhs, const_reference rhs) noexcept |
| comparison: greater than More...
|
|
template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0> |
bool | operator> (const_reference lhs, const ScalarType rhs) noexcept |
| comparison: greater than More...
|
|
template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0> |
bool | operator> (const ScalarType lhs, const_reference rhs) noexcept |
| comparison: greater than More...
|
|
bool | operator>= (const_reference lhs, const_reference rhs) noexcept |
| comparison: greater than or equal More...
|
|
template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0> |
bool | operator>= (const_reference lhs, const ScalarType rhs) noexcept |
| comparison: greater than or equal More...
|
|
template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0> |
bool | operator>= (const ScalarType lhs, const_reference rhs) noexcept |
| comparison: greater than or equal More...
|
|
|
std::istream & | operator<< (basic_json &j, std::istream &i) |
| deserialize from stream More...
|
|
std::istream & | operator>> (std::istream &i, basic_json &j) |
| deserialize from stream More...
|
|
static basic_json | parse (detail::input_adapter &&i, const parser_callback_t cb=nullptr, const bool allow_exceptions=true) |
| deserialize from a compatible input More...
|
|
static bool | accept (detail::input_adapter &&i) |
|
template<typename SAX > |
static bool | sax_parse (detail::input_adapter &&i, SAX *sax, input_format_t format=input_format_t::json, const bool strict=true) |
| generate SAX events More...
|
|
template<class IteratorType , typename std::enable_if< std::is_base_of< std::random_access_iterator_tag, typename std::iterator_traits< IteratorType >::iterator_category >::value, int >::type = 0> |
static basic_json | parse (IteratorType first, IteratorType last, const parser_callback_t cb=nullptr, const bool allow_exceptions=true) |
| deserialize from an iterator range with contiguous storage More...
|
|
template<class IteratorType , typename std::enable_if< std::is_base_of< std::random_access_iterator_tag, typename std::iterator_traits< IteratorType >::iterator_category >::value, int >::type = 0> |
static bool | accept (IteratorType first, IteratorType last) |
|
template<class IteratorType , class SAX , typename std::enable_if< std::is_base_of< std::random_access_iterator_tag, typename std::iterator_traits< IteratorType >::iterator_category >::value, int >::type = 0> |
static bool | sax_parse (IteratorType first, IteratorType last, SAX *sax) |
|
|
static std::vector< uint8_t > | to_cbor (const basic_json &j) |
| create a CBOR serialization of a given JSON value More...
|
|
static void | to_cbor (const basic_json &j, detail::output_adapter< uint8_t > o) |
|
static void | to_cbor (const basic_json &j, detail::output_adapter< char > o) |
|
static std::vector< uint8_t > | to_msgpack (const basic_json &j) |
| create a MessagePack serialization of a given JSON value More...
|
|
static void | to_msgpack (const basic_json &j, detail::output_adapter< uint8_t > o) |
|
static void | to_msgpack (const basic_json &j, detail::output_adapter< char > o) |
|
static std::vector< uint8_t > | to_ubjson (const basic_json &j, const bool use_size=false, const bool use_type=false) |
| create a UBJSON serialization of a given JSON value More...
|
|
static void | to_ubjson (const basic_json &j, detail::output_adapter< uint8_t > o, const bool use_size=false, const bool use_type=false) |
|
static void | to_ubjson (const basic_json &j, detail::output_adapter< char > o, const bool use_size=false, const bool use_type=false) |
|
static std::vector< uint8_t > | to_bson (const basic_json &j) |
| Serializes the given JSON object j to BSON and returns a vector containing the corresponding BSON-representation. More...
|
|
static void | to_bson (const basic_json &j, detail::output_adapter< uint8_t > o) |
| Serializes the given JSON object j to BSON and forwards the corresponding BSON-representation to the given output_adapter o . More...
|
|
static void | to_bson (const basic_json &j, detail::output_adapter< char > o) |
| Serializes the given JSON object j to BSON and forwards the corresponding BSON-representation to the given output_adapter o . More...
|
|
static basic_json | from_cbor (detail::input_adapter &&i, const bool strict=true, const bool allow_exceptions=true) |
| create a JSON value from an input in CBOR format More...
|
|
template<typename A1 , typename A2 , detail::enable_if_t< std::is_constructible< detail::input_adapter, A1, A2 >::value, int > = 0> |
static basic_json | from_cbor (A1 &&a1, A2 &&a2, const bool strict=true, const bool allow_exceptions=true) |
| create a JSON value from an input in CBOR format More...
|
|
static basic_json | from_msgpack (detail::input_adapter &&i, const bool strict=true, const bool allow_exceptions=true) |
| create a JSON value from an input in MessagePack format More...
|
|
template<typename A1 , typename A2 , detail::enable_if_t< std::is_constructible< detail::input_adapter, A1, A2 >::value, int > = 0> |
static basic_json | from_msgpack (A1 &&a1, A2 &&a2, const bool strict=true, const bool allow_exceptions=true) |
| create a JSON value from an input in MessagePack format More...
|
|
static basic_json | from_ubjson (detail::input_adapter &&i, const bool strict=true, const bool allow_exceptions=true) |
| create a JSON value from an input in UBJSON format More...
|
|
template<typename A1 , typename A2 , detail::enable_if_t< std::is_constructible< detail::input_adapter, A1, A2 >::value, int > = 0> |
static basic_json | from_ubjson (A1 &&a1, A2 &&a2, const bool strict=true, const bool allow_exceptions=true) |
| create a JSON value from an input in UBJSON format More...
|
|
static basic_json | from_bson (detail::input_adapter &&i, const bool strict=true, const bool allow_exceptions=true) |
| Create a JSON value from an input in BSON format. More...
|
|
template<typename A1 , typename A2 , detail::enable_if_t< std::is_constructible< detail::input_adapter, A1, A2 >::value, int > = 0> |
static basic_json | from_bson (A1 &&a1, A2 &&a2, const bool strict=true, const bool allow_exceptions=true) |
| Create a JSON value from an input in BSON format. More...
|
|
- Template Parameters
-
ObjectType | type for JSON objects (std::map by default; will be used in object_t) |
ArrayType | type for JSON arrays (std::vector by default; will be used in array_t) |
StringType | type for JSON strings and object keys (std::string by default; will be used in string_t) |
BooleanType | type for JSON booleans (bool by default; will be used in boolean_t) |
NumberIntegerType | type for JSON integer numbers (int64_t by default; will be used in number_integer_t) |
NumberUnsignedType | type for JSON unsigned integer numbers (uint64_t by default; will be used in number_unsigned_t) |
NumberFloatType | type for JSON floating-point numbers (double by default; will be used in number_float_t) |
AllocatorType | type of the allocator to use (std::allocator by default) |
JSONSerializer | the serializer to resolve internal calls to to_json() and from_json() (adl_serializer by default) |
- Requirements
- The class satisfies the following concept requirements:
- Basic
- Layout
- StandardLayoutType: JSON values have standard layout: All non-static data members are private and standard layout types, the class has no virtual functions or (virtual) base classes.
- Library-wide
- Container
- Container: JSON values can be used like STL containers and provide iterator access.
- ReversibleContainer; JSON values can be used like STL containers and provide reverse iterator access.
- Invariant
- The member variables m_value and m_type have the following relationship:
- If
m_type == value_t::object
, then m_value.object != nullptr
.
- If
m_type == value_t::array
, then m_value.array != nullptr
.
- If
m_type == value_t::string
, then m_value.string != nullptr
. The invariants are checked by member function assert_invariant().
- See also
- RFC 7159: The JavaScript Object Notation (JSON) Data Interchange Format
- Since
- version 1.0.0
Definition at line 2421 of file json.hpp.