|
Constructors of class basic_json, copy/move constructor, copy assignment, static functions creating objects, and the destructor.
|
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json | binary (const typename binary_t::container_type &init) |
| explicitly create a binary array (without subtype) More...
|
|
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json | binary (const typename binary_t::container_type &init, typename binary_t::subtype_type subtype) |
| explicitly create a binary array (with subtype) More...
|
|
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json | binary (typename binary_t::container_type &&init) |
| explicitly create a binary array More...
|
|
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json | binary (typename binary_t::container_type &&init, typename binary_t::subtype_type subtype) |
| explicitly create a binary array (with subtype) More...
|
|
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json | array (initializer_list_t init={}) |
| explicitly create an array from an initializer list More...
|
|
static JSON_HEDLEY_WARN_UNUSED_RESULT 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< !detail::is_basic_json< U >::value &&detail::is_compatible_type< basic_json_t, U >::value, int > = 0> |
| basic_json (CompatibleType &&val) noexcept(noexcept(//NOLINT(bugprone-forwarding-reference-overload, bugprone-exception-escape) JSONSerializer< U >::to_json(std::declval< basic_json_t &>(), std::forward< CompatibleType >(val)))) |
| create a JSON value from compatible types More...
|
|
template<typename BasicJsonType , detail::enable_if_t< detail::is_basic_json< BasicJsonType >::value &&!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||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...
|
|
template<typename JsonRef , detail::enable_if_t< detail::conjunction< detail::is_json_ref< JsonRef >, std::is_same< typename JsonRef::value_type, basic_json >>::value, int > = 0> |
| basic_json (const JsonRef &ref) |
|
| 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 &&std::is_nothrow_move_assignable< value_t >::value &&std::is_nothrow_move_constructible< json_value >::value &&std::is_nothrow_move_assignable< json_value >::value) |
| copy assignment More...
|
|
| ~basic_json () noexcept |
| destructor More...
|
|
|
Direct access to the stored value of a JSON value.
|
template<typename ValueType , detail::enable_if_t< detail::is_default_constructible< ValueType >::value &&detail::has_from_json< basic_json_t, ValueType >::value, int > = 0> |
ValueType | get_impl (detail::priority_tag< 0 >) const noexcept(noexcept(JSONSerializer< ValueType >::from_json(std::declval< const basic_json_t &>(), std::declval< ValueType &>()))) |
| get a value (explicit) More...
|
|
template<typename ValueType , detail::enable_if_t< detail::has_non_default_from_json< basic_json_t, ValueType >::value, int > = 0> |
ValueType | get_impl (detail::priority_tag< 1 >) const noexcept(noexcept(JSONSerializer< ValueType >::from_json(std::declval< const basic_json_t &>()))) |
| get a value (explicit); special case More...
|
|
template<typename BasicJsonType , detail::enable_if_t< detail::is_basic_json< BasicJsonType >::value, int > = 0> |
BasicJsonType | get_impl (detail::priority_tag< 2 >) const |
| get special-case overload More...
|
|
template<typename BasicJsonType , detail::enable_if_t< std::is_same< BasicJsonType, basic_json_t >::value, int > = 0> |
basic_json | get_impl (detail::priority_tag< 3 >) const |
| get special-case overload More...
|
|
template<typename PointerType , detail::enable_if_t< std::is_pointer< PointerType >::value, int > = 0> |
constexpr auto | get_impl (detail::priority_tag< 4 >) const noexcept -> decltype(std::declval< const 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> |
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 &&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 ValueTypeCV , typename ValueType = detail::uncvref_t<ValueTypeCV>> |
auto | get () const noexcept(noexcept(std::declval< const basic_json_t &>().template get_impl< ValueType >(detail::priority_tag< 4 > {}))) -> decltype(std::declval< const basic_json_t &>().template get_impl< ValueType >(detail::priority_tag< 4 > |
| get a (pointer) value (explicit) More...
|
|
return | get_impl (detail::priority_tag< 4 > {}) |
|
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 ValueType , detail::enable_if_t< !detail::is_basic_json< ValueType >::value &&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 ValueType , detail::enable_if_t< detail::is_basic_json< ValueType >::value, int > = 0> |
ValueType & | get_to (ValueType &v) const |
|
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 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 &&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< detail::conjunction< detail::negation< std::is_pointer< ValueType >>, detail::negation< std::is_same< ValueType, detail::json_ref< basic_json >>>, detail::negation< std::is_same< ValueType, typename string_t::value_type >>, detail::negation< detail::is_basic_json< ValueType >>, detail::negation< std::is_same< ValueType, std::initializer_list< typename string_t::value_type >>>, detail::is_detected_lazy< detail::get_template_function, const basic_json_t &, ValueType > >::value, int >::type = 0> |
JSON_EXPLICIT | operator ValueType () const |
| get a value (implicit) More...
|
|
binary_t & | get_binary () |
| get a binary value More...
|
|
const binary_t & | get_binary () const |
| get a binary value 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 |
| 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 |
| access specified object element More...
|
|
template<class ValueType , typename std::enable_if< detail::is_getable< basic_json_t, ValueType >::value &&!std::is_same< value_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 |
| access specified object element with default value More...
|
|
template<class ValueType , typename std::enable_if< detail::is_getable< 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 |
| access specified object element via JSON Pointer with default value 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||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||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 | swap (reference left, reference right) noexcept(std::is_nothrow_move_constructible< value_t >::value &&std::is_nothrow_move_assignable< value_t >::value &&std::is_nothrow_move_constructible< json_value >::value &&std::is_nothrow_move_assignable< json_value >::value) |
| exchanges the values 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 into array More...
|
|
iterator | insert (const_iterator pos, basic_json &&val) |
| inserts element into array More...
|
|
iterator | insert (const_iterator pos, size_type cnt, const basic_json &val) |
| inserts copies of element into array More...
|
|
iterator | insert (const_iterator pos, const_iterator first, const_iterator last) |
| inserts range of elements into array More...
|
|
iterator | insert (const_iterator pos, initializer_list_t ilist) |
| inserts elements from initializer list into array More...
|
|
void | insert (const_iterator first, const_iterator last) |
| inserts range of elements into object More...
|
|
void | update (const_reference j, bool merge_objects=false) |
| updates a JSON object from another object, overwriting existing keys More...
|
|
void | update (const_iterator first, const_iterator last, bool merge_objects=false) |
| updates a JSON object from another object, overwriting existing keys More...
|
|
void | swap (reference other) noexcept(std::is_nothrow_move_constructible< value_t >::value &&std::is_nothrow_move_assignable< value_t >::value &&std::is_nothrow_move_constructible< json_value >::value &&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...
|
|
void | swap (binary_t &other) |
| exchanges the values More...
|
|
void | swap (typename binary_t::container_type &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, ScalarType rhs) noexcept |
| comparison: equal More...
|
|
template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0> |
bool | operator== (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, ScalarType rhs) noexcept |
| comparison: not equal More...
|
|
template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0> |
bool | operator!= (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, ScalarType rhs) noexcept |
| comparison: less than More...
|
|
template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0> |
bool | operator< (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, 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<= (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, ScalarType rhs) noexcept |
| comparison: greater than More...
|
|
template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0> |
bool | operator> (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, 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>= (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...
|
|
template<typename InputType > |
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json | parse (InputType &&i, const parser_callback_t cb=nullptr, const bool allow_exceptions=true, const bool ignore_comments=false) |
| deserialize from a compatible input More...
|
|
template<typename IteratorType > |
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json | parse (IteratorType first, IteratorType last, const parser_callback_t cb=nullptr, const bool allow_exceptions=true, const bool ignore_comments=false) |
| deserialize from a pair of character iterators More...
|
|
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json | parse (detail::span_input_adapter &&i, const parser_callback_t cb=nullptr, const bool allow_exceptions=true, const bool ignore_comments=false) |
|
template<typename InputType > |
static bool | accept (InputType &&i, const bool ignore_comments=false) |
| check if the input is valid JSON More...
|
|
template<typename IteratorType > |
static bool | accept (IteratorType first, IteratorType last, const bool ignore_comments=false) |
| check if the input is valid JSON More...
|
|
static JSON_HEDLEY_WARN_UNUSED_RESULT bool | accept (detail::span_input_adapter &&i, const bool ignore_comments=false) |
|
template<typename InputType , typename SAX > |
static bool | sax_parse (InputType &&i, SAX *sax, input_format_t format=input_format_t::json, const bool strict=true, const bool ignore_comments=false) |
| generate SAX events More...
|
|
template<class IteratorType , class SAX > |
static bool | sax_parse (IteratorType first, IteratorType last, SAX *sax, input_format_t format=input_format_t::json, const bool strict=true, const bool ignore_comments=false) |
| generate SAX events More...
|
|
template<typename SAX > |
static bool | sax_parse (detail::span_input_adapter &&i, SAX *sax, input_format_t format=input_format_t::json, const bool strict=true, const bool ignore_comments=false) |
| generate SAX events More...
|
|
|
static std::vector< std::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< std::uint8_t > o) |
| create a CBOR serialization of a given JSON value More...
|
|
static void | to_cbor (const basic_json &j, detail::output_adapter< char > o) |
| create a CBOR serialization of a given JSON value More...
|
|
static std::vector< std::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< std::uint8_t > o) |
| create a MessagePack serialization of a given JSON value More...
|
|
static void | to_msgpack (const basic_json &j, detail::output_adapter< char > o) |
| create a MessagePack serialization of a given JSON value More...
|
|
static std::vector< std::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< std::uint8_t > o, 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< char > o, const bool use_size=false, const bool use_type=false) |
| create a UBJSON serialization of a given JSON value More...
|
|
static std::vector< std::uint8_t > | to_bson (const basic_json &j) |
| create a BSON serialization of a given JSON value More...
|
|
static void | to_bson (const basic_json &j, detail::output_adapter< std::uint8_t > o) |
| create a BSON serialization of a given JSON value More...
|
|
static void | to_bson (const basic_json &j, detail::output_adapter< char > o) |
| create a BSON serialization of a given JSON value More...
|
|
template<typename InputType > |
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json | from_cbor (InputType &&i, const bool strict=true, const bool allow_exceptions=true, const cbor_tag_handler_t tag_handler=cbor_tag_handler_t::error) |
| create a JSON value from an input in CBOR format More...
|
|
template<typename IteratorType > |
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json | from_cbor (IteratorType first, IteratorType last, const bool strict=true, const bool allow_exceptions=true, const cbor_tag_handler_t tag_handler=cbor_tag_handler_t::error) |
| create a JSON value from an input in CBOR format More...
|
|
template<typename T > |
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json | from_cbor (const T *ptr, std::size_t len, const bool strict=true, const bool allow_exceptions=true, const cbor_tag_handler_t tag_handler=cbor_tag_handler_t::error) |
|
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json | from_cbor (detail::span_input_adapter &&i, const bool strict=true, const bool allow_exceptions=true, const cbor_tag_handler_t tag_handler=cbor_tag_handler_t::error) |
|
template<typename InputType > |
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json | from_msgpack (InputType &&i, const bool strict=true, const bool allow_exceptions=true) |
| create a JSON value from an input in MessagePack format More...
|
|
template<typename IteratorType > |
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json | from_msgpack (IteratorType first, IteratorType last, const bool strict=true, const bool allow_exceptions=true) |
| create a JSON value from an input in MessagePack format More...
|
|
template<typename T > |
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json | from_msgpack (const T *ptr, std::size_t len, const bool strict=true, const bool allow_exceptions=true) |
|
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json | from_msgpack (detail::span_input_adapter &&i, const bool strict=true, const bool allow_exceptions=true) |
|
template<typename InputType > |
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json | from_ubjson (InputType &&i, const bool strict=true, const bool allow_exceptions=true) |
| create a JSON value from an input in UBJSON format More...
|
|
template<typename IteratorType > |
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json | from_ubjson (IteratorType first, IteratorType last, const bool strict=true, const bool allow_exceptions=true) |
| create a JSON value from an input in UBJSON format More...
|
|
template<typename T > |
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json | from_ubjson (const T *ptr, std::size_t len, const bool strict=true, const bool allow_exceptions=true) |
|
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json | from_ubjson (detail::span_input_adapter &&i, const bool strict=true, const bool allow_exceptions=true) |
|
template<typename InputType > |
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json | from_bson (InputType &&i, const bool strict=true, const bool allow_exceptions=true) |
| create a JSON value from an input in BSON format More...
|
|
template<typename IteratorType > |
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json | from_bson (IteratorType first, IteratorType last, const bool strict=true, const bool allow_exceptions=true) |
| create a JSON value from an input in BSON format More...
|
|
template<typename T > |
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json | from_bson (const T *ptr, std::size_t len, const bool strict=true, const bool allow_exceptions=true) |
|
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json | from_bson (detail::span_input_adapter &&i, const bool strict=true, const bool allow_exceptions=true) |
|
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 nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType >
a class to store JSON values
a class to store JSON values
- See also
- https://json.nlohmann.me/api/basic_json/
- Since
- version 1.0.0
Definition at line 3326 of file 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>>
template<typename CompatibleType , typename U = detail::uncvref_t<CompatibleType>, detail::enable_if_t< !detail::is_basic_json< U >::value &&detail::is_compatible_type< basic_json_t, U >::value, int > = 0>
nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType >::basic_json |
( |
CompatibleType && |
val | ) |
|
|
inlinenoexcept |
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>>
template<typename BasicJsonType , detail::enable_if_t< detail::is_basic_json< BasicJsonType >::value &&!std::is_same< basic_json, BasicJsonType >::value, int > = 0>
nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType >::basic_json |
( |
const BasicJsonType & |
val | ) |
|
|
inline |
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>>
template<class InputIT , typename std::enable_if< std::is_same< InputIT, typename basic_json_t::iterator >::value||std::is_same< InputIT, typename basic_json_t::const_iterator >::value, int >::type = 0>
nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType >::basic_json |
( |
InputIT |
first, |
|
|
InputIT |
last |
|
) |
| |
|
inline |
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>>
template<typename JsonRef , detail::enable_if_t< detail::conjunction< detail::is_json_ref< JsonRef >, std::is_same< typename JsonRef::value_type, basic_json >>::value, int > = 0>
nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType >::basic_json |
( |
const JsonRef & |
ref | ) |
|
|
inline |
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>>
void nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType >::assert_invariant |
( |
bool |
check_parents = true | ) |
const |
|
inlineprivatenoexcept |
checks the class invariants
This function asserts the class invariants. It needs to be called at the end of every constructor to make sure that created objects respect the invariant. Furthermore, it has to be called each time the type of a JSON value is changed, because the invariant expresses a relationship between m_type and m_value.
Furthermore, the parent relation is checked for arrays and objects: If check_parents true and the value is an array or object, then the container's elements must have the current value as parent.
- Parameters
-
[in] | check_parents | whether the parent relation should be checked. The value is true by default and should only be set to false during destruction of objects when the invariant does not need to hold. |
Definition at line 17840 of file 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>>
template<typename KeyT , typename std::enable_if< !std::is_same< typename std::decay< KeyT >::type, json_pointer >::value, int >::type = 0>
bool nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType >::contains |
( |
KeyT && |
key | ) |
const |
|
inline |
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>>
template<class IteratorType , typename std::enable_if< std::is_same< IteratorType, typename basic_json_t::iterator >::value||std::is_same< IteratorType, typename basic_json_t::const_iterator >::value, int >::type = 0>
IteratorType nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType >::erase |
( |
IteratorType |
pos | ) |
|
|
inline |
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>>
template<class IteratorType , typename std::enable_if< std::is_same< IteratorType, typename basic_json_t::iterator >::value||std::is_same< IteratorType, typename basic_json_t::const_iterator >::value, int >::type = 0>
IteratorType nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType >::erase |
( |
IteratorType |
first, |
|
|
IteratorType |
last |
|
) |
| |
|
inline |
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>>
template<typename PointerType , typename std::enable_if< std::is_pointer< PointerType >::value, int >::type = 0>
auto nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType >::get |
( |
| ) |
-> decltype(std::declval<basic_json_t&>().template get_ptr<PointerType>())
|
|
inlinenoexcept |
get a pointer value (explicit)
Explicit pointer access to the internally stored JSON value. No copies are made.
- Warning
- The pointer becomes invalid if the underlying JSON object changes.
- Template Parameters
-
- Returns
- pointer to the internally stored JSON value if the requested pointer type PointerType fits to the JSON value;
nullptr
otherwise
Constant.
{The example below shows how pointers to internal values of a JSON value can be requested. Note that no type conversions are made and a nullptr
is returned if the value and the requested pointer type does not match.,get__PointerType}
- See also
- see get_ptr() for explicit pointer-member access
- Since
- version 1.0.0
Definition at line 18939 of file 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>>
template<typename ValueType , detail::enable_if_t< detail::is_default_constructible< ValueType >::value &&detail::has_from_json< basic_json_t, ValueType >::value, int > = 0>
ValueType nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType >::get_impl |
( |
detail::priority_tag< 0 > |
| ) |
const |
|
inlineprivatenoexcept |
get a value (explicit)
Explicit type conversion between the JSON value and a compatible value which is CopyConstructible and DefaultConstructible. The value is converted by calling the json_serializer<ValueType> from_json()
method.
The function is equivalent to executing
This overloads is chosen if:
- Template Parameters
-
ValueType | the returned value type |
- Returns
- copy of the JSON value, converted to ValueType
- Exceptions
-
{The example below shows several conversions from JSON values to other types. There a few things to note: (1) Floating-point numbers can be converted to integers\, (2) A JSON array can be converted to a standard std::vector<short>
\, (3) A JSON object can be converted to C++ associative containers such as std::unordered_map<std::string\, json>
.,get__ValueType_const}
- Since
- version 2.1.0
Definition at line 18760 of file 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>>
template<typename ValueType , detail::enable_if_t< detail::has_non_default_from_json< basic_json_t, ValueType >::value, int > = 0>
ValueType nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType >::get_impl |
( |
detail::priority_tag< 1 > |
| ) |
const |
|
inlineprivatenoexcept |
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>>
template<typename BasicJsonType , detail::enable_if_t< detail::is_basic_json< BasicJsonType >::value, int > = 0>
BasicJsonType nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType >::get_impl |
( |
detail::priority_tag< 2 > |
| ) |
const |
|
inlineprivate |
get special-case overload
This overloads converts the current basic_json in a different basic_json type
- Template Parameters
-
- Returns
- a copy of *this, converted into BasicJsonType
Depending on the implementation of the called from_json()
method.
- Since
- version 3.2.0
Definition at line 18827 of file 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>>
template<typename BasicJsonType , detail::enable_if_t< std::is_same< BasicJsonType, basic_json_t >::value, int > = 0>
get special-case overload
This overloads avoids a lot of template boilerplate, it can be seen as the identity method
- Template Parameters
-
- Returns
- a copy of *this
Constant.
- Since
- version 2.1.0
Definition at line 18850 of file 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>>
template<typename PointerType , detail::enable_if_t< std::is_pointer< PointerType >::value, int > = 0>
get a pointer value (explicit)
get a pointer value (explicit) Explicit pointer access to the internally stored JSON value. No copies are made.
- Warning
- The pointer becomes invalid if the underlying JSON object changes.
- Template Parameters
-
- Returns
- pointer to the internally stored JSON value if the requested pointer type PointerType fits to the JSON value;
nullptr
otherwise
Constant.
{The example below shows how pointers to internal values of a JSON value can be requested. Note that no type conversions are made and a nullptr
is returned if the value and the requested pointer type does not match.,get__PointerType}
- See also
- see get_ptr() for explicit pointer-member access
- Since
- version 1.0.0
Definition at line 18863 of file 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>>
template<typename ReferenceType , typename ThisType >
static ReferenceType nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType >::get_ref_impl |
( |
ThisType & |
obj | ) |
|
|
inlinestaticprivate |
helper function to implement get_ref()
This function helps to implement get_ref() without code duplication for const and non-const overloads
- Template Parameters
-
- Exceptions
-
type_error.303 | if ReferenceType does not match underlying value type of the current JSON |
Definition at line 18677 of file 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>>
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 nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType >::get_to |
( |
T(&) |
v[N] | ) |
const |
|
inlinenoexcept |
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>>
template<typename ValueType , typename std::enable_if< detail::conjunction< detail::negation< std::is_pointer< ValueType >>, detail::negation< std::is_same< ValueType, detail::json_ref< basic_json >>>, detail::negation< std::is_same< ValueType, typename string_t::value_type >>, detail::negation< detail::is_basic_json< ValueType >>, detail::negation< std::is_same< ValueType, std::initializer_list< typename string_t::value_type >>>, detail::is_detected_lazy< detail::get_template_function, const basic_json_t &, ValueType > >::value, int >::type = 0>
JSON_EXPLICIT nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType >::operator ValueType |
( |
| ) |
const |
|
inline |
get a value (implicit)
Implicit type conversion between the JSON value and a compatible value. The call is realized by calling get() const.
- Template Parameters
-
ValueType | non-pointer type compatible to the JSON value, for instance int for JSON integer numbers, bool for JSON booleans, or std::vector types for JSON arrays. The character type of string_t as well as an initializer list of this type is excluded to avoid ambiguities as these types implicitly convert to std::string . |
- Returns
- copy of the JSON value, converted to type ValueType
- Exceptions
-
type_error.302 | in case passed type ValueType is incompatible to the JSON value type (e.g., the JSON value is of type boolean, but a string is requested); see example below |
Linear in the size of the JSON value.
{The example below shows several conversions from JSON values to other types. There a few things to note: (1) Floating-point numbers can be converted to integers\, (2) A JSON array can be converted to a standard std::vector<short>
\, (3) A JSON object can be converted to C++ associative containers such as std::unordered_map<std::string\, json>
.,operator__ValueType}
- Since
- version 1.0.0
Definition at line 19047 of file 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>>
template<class ValueType , typename std::enable_if< detail::is_getable< basic_json_t, ValueType >::value &&!std::is_same< value_t, ValueType >::value, int >::type = 0>
ValueType nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType >::value |
( |
const typename object_t::key_type & |
key, |
|
|
const ValueType & |
default_value |
|
) |
| const |
|
inline |