JSON for Modern C++ 3.10.4

◆ contains() [1/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, class BinaryType = std::vector<std::uint8_t>>
bool nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType >::contains ( const json_pointer ptr) const
inline

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]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
4using json = nlohmann::json;
5
6int 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("/array"_json_pointer) << '\n'
18 << j.contains("/array/1"_json_pointer) << '\n'
19 << j.contains("/array/-"_json_pointer) << '\n'
20 << j.contains("/array/4"_json_pointer) << '\n'
21 << j.contains("/baz"_json_pointer) << std::endl;
22
23 try
24 {
25 // try to use an array index with leading '0'
26 j.contains("/array/01"_json_pointer);
27 }
28 catch (json::parse_error& e)
29 {
30 std::cout << e.what() << '\n';
31 }
32
33 try
34 {
35 // try to use an array index that is not a number
36 j.contains("/array/one"_json_pointer);
37 }
38 catch (json::parse_error& e)
39 {
40 std::cout << e.what() << '\n';
41 }
42}
detail::parse_error parse_error
exception indicating a parse error
Definition: json.hpp:17765
basic_json<> json
default JSON class
Definition: json.hpp:3472

Output (play with this example online):
true
true
true
true
false
false
false
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
see contains(KeyT &&) const – checks the existence of a key
Since
version 3.7.0

Definition at line 22152 of file json.hpp.