1c5f01b2fSopenharmony_ci#include <iostream>
2c5f01b2fSopenharmony_ci#include <nlohmann/json.hpp>
3c5f01b2fSopenharmony_ci
4c5f01b2fSopenharmony_ciusing json = nlohmann::json;
5c5f01b2fSopenharmony_ciusing namespace nlohmann::literals;
6c5f01b2fSopenharmony_ci
7c5f01b2fSopenharmony_ciint main()
8c5f01b2fSopenharmony_ci{
9c5f01b2fSopenharmony_ci    // create a JSON object with different entry types
10c5f01b2fSopenharmony_ci    json j =
11c5f01b2fSopenharmony_ci    {
12c5f01b2fSopenharmony_ci        {"integer", 1},
13c5f01b2fSopenharmony_ci        {"floating", 42.23},
14c5f01b2fSopenharmony_ci        {"string", "hello world"},
15c5f01b2fSopenharmony_ci        {"boolean", true},
16c5f01b2fSopenharmony_ci        {"object", {{"key1", 1}, {"key2", 2}}},
17c5f01b2fSopenharmony_ci        {"array", {1, 2, 3}}
18c5f01b2fSopenharmony_ci    };
19c5f01b2fSopenharmony_ci
20c5f01b2fSopenharmony_ci    // access existing values
21c5f01b2fSopenharmony_ci    int v_integer = j.value("/integer"_json_pointer, 0);
22c5f01b2fSopenharmony_ci    double v_floating = j.value("/floating"_json_pointer, 47.11);
23c5f01b2fSopenharmony_ci
24c5f01b2fSopenharmony_ci    // access nonexisting values and rely on default value
25c5f01b2fSopenharmony_ci    std::string v_string = j.value("/nonexisting"_json_pointer, "oops");
26c5f01b2fSopenharmony_ci    bool v_boolean = j.value("/nonexisting"_json_pointer, false);
27c5f01b2fSopenharmony_ci
28c5f01b2fSopenharmony_ci    // output values
29c5f01b2fSopenharmony_ci    std::cout << std::boolalpha << v_integer << " " << v_floating
30c5f01b2fSopenharmony_ci              << " " << v_string << " " << v_boolean << "\n";
31c5f01b2fSopenharmony_ci}
32