#include #include using json_document = nlohmann::json_document; using json_view = nlohmann::json_view; using json_pointer = nlohmann::json::json_pointer; int main() { json_document doc = json_document::parse(R"({"server": {"host": "localhost", "limits": {"connections": 100}}})"); const json_view config = doc.root(); // a nested, optional setting read with a default -- no exception, even // though "timeout" is missing several levels down std::cout << config.value(json_pointer("/server/limits/connections"), 10) << '\n'; std::cout << config.value(json_pointer("/server/limits/timeout"), 30) << '\n'; // an out-of-range array index also falls back to the default json_document list_doc = json_document::parse(R"({"servers": ["a", "b"]})"); std::cout << list_doc.root().value(json_pointer("/servers/5"), std::string("none")) << '\n'; }