|
◆ operator[]() [1/8]
Uses a JSON pointer to retrieve a reference to the respective JSON value. No bound checking is performed. Similar to operator[](const typename object_t::key_type&), null values are created in arrays and objects if necessary.
In particular:
- If the JSON pointer points to an object key that does not exist, it is created an filled with a
null value before a reference to it is returned.
- If the JSON pointer points to an array index that does not exist, it is created an filled with a
null value before a reference to it is returned. All indices between the current maximum and the given index are also filled with null .
- The special value
- is treated as a synonym for the index past the end.
- Parameters
-
- Returns
- reference to the element pointed to by ptr
- Complexity
- Constant.
- Exceptions
-
parse_error.106 | if an array index begins with '0' |
parse_error.109 | if an array index was not a number |
out_of_range.404 | if the JSON pointer can not be resolved |
- Example
- The behavior is shown in the example.
2 #include <nlohmann/json.hpp>
11 { "number", 1}, { "string", "foo"}, { "array", {1, 2}}
17 std::cout << j[ "/number"_json_pointer] << '\n';
19 std::cout << j[ "/string"_json_pointer] << '\n';
21 std::cout << j[ "/array"_json_pointer] << '\n';
23 std::cout << j[ "/array/1"_json_pointer] << '\n';
28 j[ "/string"_json_pointer] = "bar";
30 std::cout << j[ "string"] << '\n';
33 j[ "/boolean"_json_pointer] = true;
35 std::cout << j << '\n';
38 j[ "/array/1"_json_pointer] = 21;
40 j[ "/array/4"_json_pointer] = 44;
42 std::cout << j[ "array"] << '\n';
45 j[ "/array/-"_json_pointer] = 55;
47 std::cout << j[ "array"] << '\n';
Output (play with this example online): 1
"foo"
[1,2]
2
"bar"
{"array":[1,2],"boolean":true,"number":1,"string":"bar"}
[1,21,null,null,44]
[1,21,null,null,44,55]
The example code above can be translated withg++ -std=c++11 -Isingle_include doc/examples/operatorjson_pointer.cpp -o operatorjson_pointer
- Since
- version 2.0.0
Definition at line 21881 of file json.hpp.
|