JSON for Modern C++
3.0
|
a class to store JSON values More...
#include <json.hpp>
Classes | |
class | const_iterator |
a const random access iterator for the basic_json class More... | |
class | const_reverse_iterator |
a const reverse random access iterator for the basic_json class More... | |
class | iterator |
a random access iterator for the basic_json class More... | |
class | reverse_iterator |
a reverse random access iterator for the basic_json class More... | |
Public Types | |
enum | parse_event_t : uint8_t { parse_event_t::object_start, parse_event_t::object_end, parse_event_t::array_start, parse_event_t::array_end, parse_event_t::key, parse_event_t::value } |
JSON callback events. More... | |
using | parser_callback_t = std::function< bool(int depth, parse_event_t event, basic_json &parsed)> |
per-element parser callback type More... | |
enum | value_t : uint8_t { value_t::null, value_t::object, value_t::array, value_t::string, value_t::boolean, value_t::number_integer, value_t::number_float, value_t::discarded } |
the JSON type enumeration More... | |
container types | |
using | value_type = basic_json |
the type of elements in a basic_json container More... | |
using | reference = value_type & |
the type of an element reference More... | |
using | const_reference = const value_type & |
the type of an element const reference More... | |
using | difference_type = std::ptrdiff_t |
a type to represent differences between iterators More... | |
using | size_type = std::size_t |
a type to represent container sizes More... | |
using | allocator_type = AllocatorType< basic_json > |
the allocator type More... | |
using | pointer = typename std::allocator_traits< allocator_type >::pointer |
the type of an element pointer More... | |
using | const_pointer = typename std::allocator_traits< allocator_type >::const_pointer |
the type of an element const pointer More... | |
JSON value data types | |
using | object_t = ObjectType< StringType, basic_json, std::less< StringType >, AllocatorType< std::pair< const StringType, basic_json >>> |
a type for an object More... | |
using | array_t = ArrayType< basic_json, AllocatorType< basic_json >> |
a type for an array More... | |
using | string_t = StringType |
a type for a string More... | |
using | boolean_t = BooleanType |
a type for a boolean More... | |
using | number_integer_t = NumberIntegerType |
a type for a number (integer) More... | |
using | number_float_t = NumberFloatType |
a type for a number (floating-point) More... | |
Public Member Functions | |
basic_json (const value_t value) | |
create an empty value with a given type More... | |
basic_json () noexcept=default | |
create a null object (implicitly) More... | |
basic_json (std::nullptr_t) noexcept | |
create a null object (explicitly) More... | |
basic_json (const object_t &value) | |
create an object (explicit) More... | |
template<class CompatibleObjectType , typename std::enable_if< std::is_constructible< typename object_t::key_type, typename CompatibleObjectType::key_type >::value andstd::is_constructible< basic_json, typename CompatibleObjectType::mapped_type >::value, int >::type = 0> | |
basic_json (const CompatibleObjectType &value) | |
create an object (implicit) More... | |
basic_json (const array_t &value) | |
create an array (explicit) More... | |
template<class CompatibleArrayType , typename std::enable_if< not std::is_same< CompatibleArrayType, typename __basic_json::iterator >::value andnot std::is_same< CompatibleArrayType, typename __basic_json::const_iterator >::value andnot std::is_same< CompatibleArrayType, typename __basic_json::reverse_iterator >::value andnot std::is_same< CompatibleArrayType, typename __basic_json::const_reverse_iterator >::value andnot std::is_same< CompatibleArrayType, typename array_t::iterator >::value andnot std::is_same< CompatibleArrayType, typename array_t::const_iterator >::value andstd::is_constructible< basic_json, typename CompatibleArrayType::value_type >::value, int >::type = 0> | |
basic_json (const CompatibleArrayType &value) | |
create an array (implicit) More... | |
basic_json (const string_t &value) | |
create a string (explicit) More... | |
basic_json (const typename string_t::value_type *value) | |
create a string (explicit) More... | |
template<class CompatibleStringType , typename std::enable_if< std::is_constructible< string_t, CompatibleStringType >::value, int >::type = 0> | |
basic_json (const CompatibleStringType &value) | |
create a string (implicit) More... | |
basic_json (boolean_t value) | |
create a boolean (explicit) More... | |
template<typename T , typename std::enable_if< not(std::is_same< T, int >::value) and std::is_same< T, number_integer_t >::value, int >::type = 0> | |
basic_json (const number_integer_t value) | |
create an integer number (explicit) More... | |
basic_json (const int value) | |
create an integer number from an enum type (explicit) More... | |
template<typename CompatibleNumberIntegerType , typename std::enable_if< std::is_constructible< number_integer_t, CompatibleNumberIntegerType >::value andstd::numeric_limits< CompatibleNumberIntegerType >::is_integer, CompatibleNumberIntegerType >::type = 0> | |
basic_json (const CompatibleNumberIntegerType value) noexcept | |
create an integer number (implicit) More... | |
basic_json (const number_float_t value) | |
create a floating-point number (explicit) More... | |
template<typename CompatibleNumberFloatType , typename = typename std::enable_if< std::is_constructible<number_float_t, CompatibleNumberFloatType>::value and std::is_floating_point<CompatibleNumberFloatType>::value>::type> | |
basic_json (const CompatibleNumberFloatType value) noexcept | |
create an floating-point number (implicit) More... | |
basic_json (std::initializer_list< basic_json > 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 count, const basic_json &value) | |
construct an array with count copies of given value More... | |
template<class InputIT , typename std::enable_if< std::is_same< InputIT, typename __basic_json::iterator >::value orstd::is_same< InputIT, typename __basic_json::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 () | |
destructor More... | |
reference & | operator= (basic_json other) noexcept(std::is_nothrow_move_constructible< value_t >::value andstd::is_nothrow_move_assignable< value_t >::value andstd::is_nothrow_move_constructible< json_value >::value andstd::is_nothrow_move_assignable< json_value >::value) |
copy assignment More... | |
object inspection | |
string_t | dump (const int indent=-1) const |
serialization More... | |
value_t | type () const noexcept |
return the type of the JSON value (explicit) More... | |
bool | is_primitive () const noexcept |
return whether type is primitive More... | |
bool | is_structured () const noexcept |
return whether type is structured More... | |
bool | is_null () const noexcept |
return whether value is null More... | |
bool | is_boolean () const noexcept |
return whether value is a boolean More... | |
bool | is_number () const noexcept |
return whether value is a number More... | |
bool | is_number_integer () const noexcept |
return whether value is an integer number More... | |
bool | is_number_float () const noexcept |
return whether value is a floating-point number More... | |
bool | is_object () const noexcept |
return whether value is an object More... | |
bool | is_array () const noexcept |
return whether value is an array More... | |
bool | is_string () const noexcept |
return whether value is a string More... | |
bool | is_discarded () const noexcept |
return whether value is discarded More... | |
operator value_t () const noexcept | |
return the type of the JSON value (implicit) More... | |
value access | |
template<typename ValueType , typename std::enable_if< not std::is_pointer< ValueType >::value, int >::type = 0> | |
ValueType | get () const |
get a value (explicit) More... | |
template<typename PointerType , typename std::enable_if< std::is_pointer< PointerType >::value, int >::type = 0> | |
PointerType | get () noexcept |
get a pointer value (explicit) More... | |
template<typename PointerType , typename std::enable_if< std::is_pointer< PointerType >::value, int >::type = 0> | |
const PointerType | get () const noexcept |
get a pointer value (explicit) More... | |
template<typename PointerType , typename std::enable_if< std::is_pointer< PointerType >::value, int >::type = 0> | |
PointerType | get_ptr () noexcept |
get a pointer value (implicit) More... | |
template<typename PointerType , typename std::enable_if< std::is_pointer< PointerType >::valueand std::is_const< PointerType >::value, int >::type = 0> | |
const PointerType | get_ptr () const noexcept |
get a pointer value (implicit) More... | |
template<typename ValueType , typename std::enable_if< not std::is_pointer< ValueType >::value, int >::type = 0> | |
operator ValueType () const | |
get a value (implicit) More... | |
element access | |
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 , std::size_t n> | |
reference | operator[] (const T(&key)[n]) |
access specified object element More... | |
template<typename T , std::size_t n> | |
const_reference | operator[] (const T(&key)[n]) const |
access specified object element 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 InteratorType , typename std::enable_if< std::is_same< InteratorType, typename __basic_json::iterator >::value orstd::is_same< InteratorType, typename __basic_json::const_iterator >::value, int >::type = 0> | |
InteratorType | erase (InteratorType pos) |
remove element given an iterator More... | |
template<class InteratorType , typename std::enable_if< std::is_same< InteratorType, typename basic_json::iterator >::value orstd::is_same< InteratorType, typename basic_json::const_iterator >::value, int >::type = 0> | |
InteratorType | erase (InteratorType first, InteratorType 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... | |
iterator | find (typename object_t::key_type key) |
find an element in a JSON object More... | |
const_iterator | find (typename object_t::key_type key) const |
find an element in a JSON object More... | |
size_type | count (typename object_t::key_type key) const |
returns the number of occurrences of a key in a JSON object More... | |
iterators | |
iterator | begin () |
returns an iterator to the first element More... | |
const_iterator | begin () const |
returns a const iterator to the first element More... | |
const_iterator | cbegin () const |
returns a const iterator to the first element More... | |
iterator | end () |
returns an iterator to one past the last element More... | |
const_iterator | end () const |
returns a const iterator to one past the last element More... | |
const_iterator | cend () const |
returns a const iterator to one past the last element More... | |
reverse_iterator | rbegin () |
returns an iterator to the reverse-beginning More... | |
const_reverse_iterator | rbegin () const |
returns a const reverse iterator to the last element More... | |
reverse_iterator | rend () |
returns an iterator to the reverse-end More... | |
const_reverse_iterator | rend () const |
returns a const reverse iterator to one before the first More... | |
const_reverse_iterator | crbegin () const |
returns a const reverse iterator to the last element More... | |
const_reverse_iterator | crend () const |
returns a const reverse iterator to one before the first More... | |
capacity | |
bool | empty () const noexcept |
checks whether the container is empty More... | |
size_type | size () const noexcept |
returns the number of elements More... | |
size_type | max_size () const noexcept |
returns the maximum possible number of elements More... | |
modifiers | |
void | clear () noexcept |
clears the contents More... | |
void | push_back (basic_json &&value) |
add an object to an array More... | |
reference | operator+= (basic_json &&value) |
add an object to an array More... | |
void | push_back (const basic_json &value) |
add an object to an array More... | |
reference | operator+= (const basic_json &value) |
add an object to an array More... | |
void | push_back (const typename object_t::value_type &value) |
add an object to an object More... | |
reference | operator+= (const typename object_t::value_type &value) |
add an object to an object More... | |
void | swap (reference other) noexcept(std::is_nothrow_move_constructible< value_t >::value andstd::is_nothrow_move_assignable< value_t >::value andstd::is_nothrow_move_constructible< json_value >::value andstd::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... | |
Static Public Member Functions | |
static basic_json | array (std::initializer_list< basic_json > init=std::initializer_list< basic_json >()) |
explicitly create an array from an initializer list More... | |
static allocator_type | get_allocator () |
returns the allocator associated with the container More... | |
static basic_json | object (std::initializer_list< basic_json > init=std::initializer_list< basic_json >()) |
explicitly create an object from an initializer list More... | |
Friends | |
lexicographical comparison operators | |
bool | operator< (const value_t lhs, const value_t rhs) |
comparison operator for JSON types More... | |
bool | operator== (const_reference lhs, const_reference rhs) noexcept |
comparison: equal More... | |
bool | operator!= (const_reference lhs, const_reference rhs) noexcept |
comparison: not equal More... | |
bool | operator< (const_reference lhs, const_reference rhs) noexcept |
comparison: less than More... | |
bool | operator<= (const_reference lhs, const_reference rhs) noexcept |
comparison: less than or equal More... | |
bool | operator> (const_reference lhs, const_reference rhs) noexcept |
comparison: greater than More... | |
bool | operator>= (const_reference lhs, const_reference rhs) noexcept |
comparison: greater than or equal More... | |
serialization | |
std::ostream & | operator<< (std::ostream &o, const basic_json &j) |
serialize to stream More... | |
std::ostream & | operator>> (const basic_json &j, std::ostream &o) |
serialize to stream More... | |
deserialization | |
static basic_json | parse (const string_t &s, parser_callback_t cb=nullptr) |
deserialize from string More... | |
static basic_json | parse (std::istream &i, parser_callback_t cb=nullptr) |
deserialize from stream 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... | |
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 ( by default; will be used in boolean_t) |
NumberIntegerType | type for JSON integer numbers ( by default; will be used in number_integer_t) |
NumberFloatType | type for JSON floating-point numbers ( by default; will be used in number_float_t) |
AllocatorType | type of the allocator to use ( by default) |