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