mirror of
https://github.com/nlohmann/json.git
synced 2026-08-05 04:49:04 +00:00
48 lines
1.6 KiB
C++
48 lines
1.6 KiB
C++
#include <iostream>
|
|
#include <nlohmann/json.hpp>
|
|
|
|
using json = nlohmann::json;
|
|
|
|
int main()
|
|
{
|
|
// a JSON text with an array and a number inside an object
|
|
auto text = R"({"IDs": [116, 943], "Width": 800})";
|
|
|
|
// discard the array when the parser reads its opening bracket
|
|
json j_array_start = json::parse(text, [](int /*depth*/, json::parse_event_t event, json & /*parsed*/)
|
|
{
|
|
return event != json::parse_event_t::array_start;
|
|
});
|
|
|
|
// discard the same array when the parser reads its closing bracket
|
|
json j_array_end = json::parse(text, [](int /*depth*/, json::parse_event_t event, json & /*parsed*/)
|
|
{
|
|
return event != json::parse_event_t::array_end;
|
|
});
|
|
|
|
// discard the number, but keep its key
|
|
json j_value = json::parse(text, [](int /*depth*/, json::parse_event_t event, json & parsed)
|
|
{
|
|
return !(event == json::parse_event_t::value && parsed == json(800));
|
|
});
|
|
|
|
// discard the key of the number
|
|
json j_key = json::parse(text, [](int /*depth*/, json::parse_event_t event, json & parsed)
|
|
{
|
|
return !(event == json::parse_event_t::key && parsed == json("Width"));
|
|
});
|
|
|
|
// discard the top-level object
|
|
json j_root = json::parse(text, [](int /*depth*/, json::parse_event_t event, json & /*parsed*/)
|
|
{
|
|
return event != json::parse_event_t::object_end;
|
|
});
|
|
|
|
// in every case, the discarded value is removed together with its key
|
|
std::cout << j_array_start << '\n'
|
|
<< j_array_end << '\n'
|
|
<< j_value << '\n'
|
|
<< j_key << '\n'
|
|
<< j_root << '\n';
|
|
}
|