JSON for Modern C++  3.7.0

◆ contains() [2/2]

template<template< typename U, typename V, typename... Args > class ObjectType = std::map, template< typename U, typename... Args > class ArrayType = std::vector, class StringType = std::string, class BooleanType = bool, class NumberIntegerType = std::int64_t, class NumberUnsignedType = std::uint64_t, class NumberFloatType = double, template< typename U > class AllocatorType = std::allocator, template< typename T, typename SFINAE=void > class JSONSerializer = adl_serializer>
bool nlohmann::basic_json::contains ( const json_pointer ptr) const
inline

Check wehther 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]ptrJSON 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.106if an array index begins with '0'
parse_error.109if 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().
1 #include <iostream>
2 #include <nlohmann/json.hpp>
3 
4 using json = nlohmann::json;
5 
6 int main()
7 {
8  // create a JSON value
9  json j =
10  {
11  {"number", 1}, {"string", "foo"}, {"array", {1, 2}}
12  };
13 
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;
23 
24  // out_of_range.106
25  try
26  {
27  // try to use an array index with leading '0'
28  j.contains("/array/01"_json_pointer);
29  }
30  catch (json::parse_error& e)
31  {
32  std::cout << e.what() << '\n';
33  }
34 
35  // out_of_range.109
36  try
37  {
38  // try to use an array index that is not a number
39  j.contains("/array/one"_json_pointer);
40  }
41  catch (json::parse_error& e)
42  {
43  std::cout << e.what() << '\n';
44  }
45 }
basic_json<> json
default JSON class
Definition: json.hpp:2355
detail::parse_error parse_error
exception indicating a parse error
Definition: json.hpp:14639

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 with
g++ -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 18461 of file json.hpp.