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 value
10c5f01b2fSopenharmony_ci    json j =
11c5f01b2fSopenharmony_ci    {
12c5f01b2fSopenharmony_ci        {"number", 1}, {"string", "foo"}, {"array", {1, 2}}
13c5f01b2fSopenharmony_ci    };
14c5f01b2fSopenharmony_ci
15c5f01b2fSopenharmony_ci    // read-only access
16c5f01b2fSopenharmony_ci
17c5f01b2fSopenharmony_ci    // output element with JSON pointer "/number"
18c5f01b2fSopenharmony_ci    std::cout << j["/number"_json_pointer] << '\n';
19c5f01b2fSopenharmony_ci    // output element with JSON pointer "/string"
20c5f01b2fSopenharmony_ci    std::cout << j["/string"_json_pointer] << '\n';
21c5f01b2fSopenharmony_ci    // output element with JSON pointer "/array"
22c5f01b2fSopenharmony_ci    std::cout << j["/array"_json_pointer] << '\n';
23c5f01b2fSopenharmony_ci    // output element with JSON pointer "/array/1"
24c5f01b2fSopenharmony_ci    std::cout << j["/array/1"_json_pointer] << '\n';
25c5f01b2fSopenharmony_ci
26c5f01b2fSopenharmony_ci    // writing access
27c5f01b2fSopenharmony_ci
28c5f01b2fSopenharmony_ci    // change the string
29c5f01b2fSopenharmony_ci    j["/string"_json_pointer] = "bar";
30c5f01b2fSopenharmony_ci    // output the changed string
31c5f01b2fSopenharmony_ci    std::cout << j["string"] << '\n';
32c5f01b2fSopenharmony_ci
33c5f01b2fSopenharmony_ci    // "change" a nonexisting object entry
34c5f01b2fSopenharmony_ci    j["/boolean"_json_pointer] = true;
35c5f01b2fSopenharmony_ci    // output the changed object
36c5f01b2fSopenharmony_ci    std::cout << j << '\n';
37c5f01b2fSopenharmony_ci
38c5f01b2fSopenharmony_ci    // change an array element
39c5f01b2fSopenharmony_ci    j["/array/1"_json_pointer] = 21;
40c5f01b2fSopenharmony_ci    // "change" an array element with nonexisting index
41c5f01b2fSopenharmony_ci    j["/array/4"_json_pointer] = 44;
42c5f01b2fSopenharmony_ci    // output the changed array
43c5f01b2fSopenharmony_ci    std::cout << j["array"] << '\n';
44c5f01b2fSopenharmony_ci
45c5f01b2fSopenharmony_ci    // "change" the array element past the end
46c5f01b2fSopenharmony_ci    j["/array/-"_json_pointer] = 55;
47c5f01b2fSopenharmony_ci    // output the changed array
48c5f01b2fSopenharmony_ci    std::cout << j["array"] << '\n';
49c5f01b2fSopenharmony_ci}
50