Files
json/examples/basic_json_view__at.cpp
T
2026-10-21 10:31:00 +00:00

37 lines
1.0 KiB
C++

#include <iostream>
#include <nlohmann/json_view.hpp>
using json_document = nlohmann::json_document;
using json_view = nlohmann::json_view;
int main()
{
// required fields of a service configuration -- at() reports a missing
// or wrong-typed field with the very same exception basic_json::at()
// would throw for the equivalent nlohmann::json value, so error
// handling written against basic_json::at() keeps working unchanged
json_document config = json_document::parse(R"({"name": "cache", "port": "6379"})");
const json_view service = config.root();
std::cout << service.at("port").materialize().dump() << '\n';
try
{
// "port" is a string, not an array
static_cast<void>(service.at("port").at(0));
}
catch (const nlohmann::json::type_error& e)
{
std::cout << e.what() << '\n';
}
try
{
static_cast<void>(service.at("timeout"));
}
catch (const nlohmann::json::out_of_range& e)
{
std::cout << e.what() << '\n';
}
}