Files
json/examples/parse_event_t.cpp
T
2026-10-03 05:43:12 +00:00

45 lines
1.2 KiB
C++

#include <iostream>
#include <string>
#include <nlohmann/json.hpp>
using json = nlohmann::json;
// translate a parse_event_t to a human-readable name
std::string event_name(json::parse_event_t event)
{
switch (event)
{
case json::parse_event_t::object_start:
return "object_start";
case json::parse_event_t::object_end:
return "object_end";
case json::parse_event_t::array_start:
return "array_start";
case json::parse_event_t::array_end:
return "array_end";
case json::parse_event_t::key:
return "key";
case json::parse_event_t::value:
return "value";
default:
return "unknown";
}
}
int main()
{
// a small JSON text
auto text = R"({"pi": 3.141, "numbers": [1, 2]})";
// parse the text and report every event together with its depth;
// returning true keeps every value unchanged
json j = json::parse(text, [](int depth, json::parse_event_t event, json& /*parsed*/)
{
std::cout << depth << " " << event_name(event) << '\n';
return true;
});
// the callback did not change anything, so the parsed value is unaffected
std::cout << j << '\n';
}