]>
git.proxmox.com Git - ceph.git/blob - ceph/src/jaegertracing/opentelemetry-cpp/third_party/nlohmann-json/doc/examples/sax_parse.cpp
4 #include <nlohmann/json.hpp>
6 using json
= nlohmann::json
;
8 // a simple event consumer that collects string representations of the passed
9 // values; not inheriting from json::json_sax_t is not required, but can
10 // help not to forget a required function
11 class sax_event_consumer
: public json::json_sax_t
14 std::vector
<std::string
> events
;
18 events
.push_back("value: null");
22 bool boolean(bool val
) override
24 events
.push_back("value: " + std::string(val
? "true" : "false"));
28 bool number_integer(number_integer_t val
) override
30 events
.push_back("value: " + std::to_string(val
));
34 bool number_unsigned(number_unsigned_t val
) override
36 events
.push_back("value: " + std::to_string(val
));
40 bool number_float(number_float_t val
, const string_t
& s
) override
42 events
.push_back("value: " + s
);
46 bool string(string_t
& val
) override
48 events
.push_back("value: " + val
);
52 bool start_object(std::size_t elements
) override
54 events
.push_back("start: object");
58 bool end_object() override
60 events
.push_back("end: object");
64 bool start_array(std::size_t elements
) override
66 events
.push_back("start: array");
70 bool end_array() override
72 events
.push_back("end: array");
76 bool key(string_t
& val
) override
78 events
.push_back("key: " + val
);
82 bool binary(json::binary_t
& val
) override
84 events
.push_back("binary");
88 bool parse_error(std::size_t position
, const std::string
& last_token
, const json::exception
& ex
) override
90 events
.push_back("error: " + std::string(ex
.what()));
103 "Title
": "View from
15th Floor
",
105 "Url
": "http
://www.example.com/image/481989943",
110 "IDs": [116, 943, 234, 38793],
111 "Distance": 12.723374634
116 // create a SAX event consumer object
117 sax_event_consumer sec;
119 // parse and serialize JSON
120 bool result = json::sax_parse(text, &sec);
122 // output the recorded events
123 for (auto& event : sec.events)
125 std::cout << "(" << event << ") ";
128 // output the result of sax_parse
129 std::cout << "\nresult
: " << std::boolalpha << result << std::endl;