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    std::cout << std::boolalpha
16c5f01b2fSopenharmony_ci              << j.contains("/number"_json_pointer) << '\n'
17c5f01b2fSopenharmony_ci              << j.contains("/string"_json_pointer) << '\n'
18c5f01b2fSopenharmony_ci              << j.contains("/array"_json_pointer) << '\n'
19c5f01b2fSopenharmony_ci              << j.contains("/array/1"_json_pointer) << '\n'
20c5f01b2fSopenharmony_ci              << j.contains("/array/-"_json_pointer) << '\n'
21c5f01b2fSopenharmony_ci              << j.contains("/array/4"_json_pointer) << '\n'
22c5f01b2fSopenharmony_ci              << j.contains("/baz"_json_pointer) << std::endl;
23c5f01b2fSopenharmony_ci
24c5f01b2fSopenharmony_ci    try
25c5f01b2fSopenharmony_ci    {
26c5f01b2fSopenharmony_ci        // try to use an array index with leading '0'
27c5f01b2fSopenharmony_ci        j.contains("/array/01"_json_pointer);
28c5f01b2fSopenharmony_ci    }
29c5f01b2fSopenharmony_ci    catch (json::parse_error& e)
30c5f01b2fSopenharmony_ci    {
31c5f01b2fSopenharmony_ci        std::cout << e.what() << '\n';
32c5f01b2fSopenharmony_ci    }
33c5f01b2fSopenharmony_ci
34c5f01b2fSopenharmony_ci    try
35c5f01b2fSopenharmony_ci    {
36c5f01b2fSopenharmony_ci        // try to use an array index that is not a number
37c5f01b2fSopenharmony_ci        j.contains("/array/one"_json_pointer);
38c5f01b2fSopenharmony_ci    }
39c5f01b2fSopenharmony_ci    catch (json::parse_error& e)
40c5f01b2fSopenharmony_ci    {
41c5f01b2fSopenharmony_ci        std::cout << e.what() << '\n';
42c5f01b2fSopenharmony_ci    }
43c5f01b2fSopenharmony_ci}
44