Check whether the given JSON pointer ptr can be resolved in the current JSON value.
- Note
- This method can be executed on any JSON value type.
- Parameters
-
[in] | ptr | JSON pointer to check its existence. |
- Returns
- true if the JSON pointer can be resolved to a stored value, false otherwise.
- Postcondition
- If
j.contains(ptr)
returns true, it is safe to call j[ptr]
.
- Exceptions
-
parse_error.106 | if an array index begins with '0' |
parse_error.109 | if an array index was not a number |
- Complexity
- Logarithmic in the size of the JSON object.
- Example
- The following code shows an example for
contains()
.
2 #include <nlohmann/json.hpp>
11 {
"number", 1}, {
"string",
"foo"}, {
"array", {1, 2}}
14 std::cout << std::boolalpha
15 << j.contains(
"/number"_json_pointer) <<
'\n'
16 << j.contains(
"/string"_json_pointer) <<
'\n'
17 << j.contains(
"/string"_json_pointer) <<
'\n'
18 << j.contains(
"/array"_json_pointer) <<
'\n'
19 << j.contains(
"/array/1"_json_pointer) <<
'\n'
20 << j.contains(
"/array/-"_json_pointer) <<
'\n'
21 << j.contains(
"/array/4"_json_pointer) <<
'\n'
22 << j.contains(
"/baz"_json_pointer) << std::endl;
28 j.contains(
"/array/01"_json_pointer);
32 std::cout << e.what() <<
'\n';
39 j.contains(
"/array/one"_json_pointer);
43 std::cout << e.what() <<
'\n';
Output (play with this example online): true
true
true
true
true
false
false
false
[json.exception.parse_error.106] parse error: array index '01' must not begin with '0'
[json.exception.parse_error.109] parse error: array index 'one' is not a number
The example code above can be translated withg++ -std=c++11 -Isingle_include doc/examples/contains_json_pointer.cpp -o contains_json_pointer
- See also
- contains(KeyT &&) const – checks the existence of a key
- Since
- version 3.7.0
Definition at line 18645 of file json.hpp.