1#include <iostream>
2#include <iomanip>
3#include <nlohmann/json.hpp>
4
5using json = nlohmann::json;
6
7int main()
8{
9    // a JSON text
10    auto text = R"(
11    {
12        "Image": {
13            "Width":  800,
14            "Height": 600,
15            "Title":  "View from 15th Floor",
16            "Thumbnail": {
17                "Url":    "http://www.example.com/image/481989943",
18                "Height": 125,
19                "Width":  100
20            },
21            "Animated" : false,
22            "IDs": [116, 943, 234, 38793]
23        }
24    }
25    )";
26
27    // parse and serialize JSON
28    json j_complete = json::parse(text);
29    std::cout << std::setw(4) << j_complete << "\n\n";
30
31
32    // define parser callback
33    json::parser_callback_t cb = [](int depth, json::parse_event_t event, json & parsed)
34    {
35        // skip object elements with key "Thumbnail"
36        if (event == json::parse_event_t::key and parsed == json("Thumbnail"))
37        {
38            return false;
39        }
40        else
41        {
42            return true;
43        }
44    };
45
46    // parse (with callback) and serialize JSON
47    json j_filtered = json::parse(text, cb);
48    std::cout << std::setw(4) << j_filtered << '\n';
49}
50