#include #include using json_document = nlohmann::json_document; using json_pointer = nlohmann::json::json_pointer; int main() { json_document doc = json_document::parse(R"({"region": "eu", "servers": ["eu-1", "eu-2"]})"); const auto root = doc.root(); std::cout << root.at(json_pointer("/servers/1")).materialize().dump() << '\n'; // at() throws for every resolution failure -- with the very same // message json::at(ptr) would throw for the same pointer and the same // document try { static_cast(root.at(json_pointer("/servers/5"))); } catch (const nlohmann::json::out_of_range& e) { std::cout << e.what() << '\n'; } try { static_cast(root.at(json_pointer("/missing"))); } catch (const nlohmann::json::out_of_range& e) { std::cout << e.what() << '\n'; } }