JSON for Modern C++ 2.1.1
Loading...
Searching...
No Matches

◆ basic_json() [7/9]

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>
JSON_DEPRECATED nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::basic_json ( std::istream &  i,
const parser_callback_t  cb = nullptr 
)
inlineexplicit
Parameters
[in,out]istream to read a serialized JSON value from
[in]cba parser callback function of type parser_callback_t which is used to control the deserialization by filtering unwanted values (optional)
Complexity\n Linear in the length of the input. The parser is a predictive
LL(1) parser. The complexity can be higher if the parser callback function cb has a super-linear complexity.
Note
A UTF-8 byte order mark is silently ignored.
Deprecated:
This constructor is deprecated and will be removed in version 3.0.0 to unify the interface of the library. Deserialization will be done by stream operators or by calling one of the parse functions, e.g. parse(std::istream&, const parser_callback_t). That is, calls like json j(i); for an input stream i need to be replaced by json j = json::parse(i);. See the example below.
Example\n The example below demonstrates constructing a JSON value from
a std::stringstream with and without callback function.
1#include <json.hpp>
2
3using json = nlohmann::json;
4
5int main()
6{
7 // a JSON text
8 auto text = R"(
9 {
10 "Image": {
11 "Width": 800,
12 "Height": 600,
13 "Title": "View from 15th Floor",
14 "Thumbnail": {
15 "Url": "http://www.example.com/image/481989943",
16 "Height": 125,
17 "Width": 100
18 },
19 "Animated" : false,
20 "IDs": [116, 943, 234, 38793]
21 }
22 }
23 )";
24
25 // fill a stream with JSON text
26 std::stringstream ss;
27 ss << text;
28
29 // create JSON from stream
30 json j_complete(ss); // deprecated!
31 // shall be replaced by: json j_complete = json::parse(ss);
32 std::cout << std::setw(4) << j_complete << "\n\n";
33
34
35 // define parser callback
37 {
38 // skip object elements with key "Thumbnail"
39 if (event == json::parse_event_t::key and parsed == json("Thumbnail"))
40 {
41 return false;
42 }
43 else
44 {
45 return true;
46 }
47 };
48
49 // fill a stream with JSON text
50 ss.clear();
51 ss << text;
52
53 // create JSON from stream (with callback)
55 // shall be replaced by: json j_filtered = json::parse(ss, cb);
56 std::cout << std::setw(4) << j_filtered << '\n';
57}
static basic_json array(std::initializer_list< basic_json > init=std::initializer_list< basic_json >())
explicitly create an array from an initializer list
Definition json.hpp:2165
void clear() noexcept
clears the contents
Definition json.hpp:5185
parse_event_t
JSON callback events.
Definition json.hpp:1808
@ key
the parser read a key of a value in an object
std::function< bool(int depth, parse_event_t event, basic_json &parsed)> parser_callback_t
per-element parser callback type
Definition json.hpp:1877
a class to store JSON values
Definition json.hpp:1040
basic_json<> json
default JSON class
Definition json.hpp:12369

Output (play with this example online):
{
    "Image": {
        "Animated": false,
        "Height": 600,
        "IDs": [
            116,
            943,
            234,
            38793
        ],
        "Thumbnail": {
            "Height": 125,
            "Url": "http://www.example.com/image/481989943",
            "Width": 100
        },
        "Title": "View from 15th Floor",
        "Width": 800
    }
}

{
    "Image": {
        "Animated": false,
        "Height": 600,
        "IDs": [
            116,
            943,
            234,
            38793
        ],
        "Title": "View from 15th Floor",
        "Width": 800
    }
}

The example code above can be translated with
g++ -std=c++11 -Isrc doc/examples/basic_json__istream.cpp -o basic_json__istream 
Since
version 2.0.0, deprecated in version 2.0.3, to be removed in version 3.0.0

Definition at line 2396 of file json.hpp.