|
|
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 = int64_t, class NumberUnsignedType = uint64_t, class NumberFloatType = double, template< typename U > class AllocatorType = std::allocator>
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>
| nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType >::basic_json |
( |
InputIT |
first, |
|
|
InputIT |
last |
|
) |
| |
|
inline |
Constructs the JSON value with the contents of the range [first, last). The semantics depends on the different types a JSON value can have:
- In case of primitive types (number, boolean, or string), first must be
begin() and last must be end(). In this case, the value is copied. Otherwise, std::out_of_range is thrown.
- In case of structured types (array, object), the constructor behaves as similar versions for
std::vector.
- In case of a null type, std::domain_error is thrown.
- Template Parameters
-
- Parameters
-
| [in] | first | begin of the range to copy from (included) |
| [in] | last | end of the range to copy from (excluded) |
- Exceptions
-
| std::domain_error | if iterators are not compatible; that is, do not belong to the same JSON value; example: "iterators are not compatible" |
| std::out_of_range | if iterators are for a primitive type (number, boolean, or string) where an out of range error can be detected easily; example: "iterators out of range" |
| std::bad_alloc | if allocation for object, array, or string fails |
| std::domain_error | if called with a null value; example: "cannot use
construct with iterators from null" |
- Complexity
- Linear in distance between first and last.
- Example
- The example below shows several ways to create JSON values by specifying a subrange with iterators.
8 json j_array = { "alpha", "bravo", "charly", "delta", "easy"}; 10 json j_object = {{ "one", "eins"}, { "two", "zwei"}}; 13 json j_array_range(j_array. begin() + 1, j_array. end() - 2); 18 std::cout << j_array_range << '\n'; 19 std::cout << j_number_range << '\n'; 20 std::cout << j_object_range << '\n'; iterator find(typename object_t::key_type key) find an element in a JSON object
a class to store JSON values
iterator end() returns an iterator to one past the last element
iterator begin() returns an iterator to the first element
namespace for Niels Lohmann
Output (play with this example online): ["bravo","charly"]
42
{"one":"eins"}
The example code above can be translated withg++ -std=c++11 -Isrc doc/examples/basic_json__InputIt_InputIt.cpp -o basic_json__InputIt_InputIt
- Since
- version 1.0.0
Definition at line 1746 of file json.hpp.
|