nlohmann::basic_json::contains¶
// (1)
template<typename KeyT>
bool contains(KeyT && key) const;
// (2)
bool contains(const json_pointer& ptr) const;
- Check whether an element exists in a JSON object with key equivalent to
key. If the element is not found or the JSON value is not an object,falseis returned. - Check whether the given JSON pointer
ptrcan be resolved in the current JSON value.
Template parameters¶
KeyT- A type for an object key other than
basic_json::json_pointer.
Parameters¶
key(in)- key value to check its existence.
ptr(in)- JSON pointer to check its existence.
Return value¶
trueif an element with specifiedkeyexists. If no such element with such key is found or the JSON value is not an object,falseis returned.trueif the JSON pointer can be resolved to a stored value,falseotherwise.
Exception safety¶
Strong exception safety: if an exception occurs, the original value stays intact.
Exceptions¶
- The function does not throw exceptions.
- The function can throw the following exceptions:
- Throws
parse_error.106if an array index begins with0. - Throws
parse_error.109if an array index was not a number.
- Throws
Complexity¶
Logarithmic in the size of the JSON object.
Notes¶
- This method always returns
falsewhen executed on a JSON type that is not an object. - This method can be executed on any JSON value type.
Postconditions
If j.contains(x) returns true for a key or JSON pointer x, then it is safe to call j[x].
Examples¶
Example (1) check with key
The example shows how contains() is used.
#include <iostream>
#include <nlohmann/json.hpp>
using json = nlohmann::json;
int main()
{
// create some JSON values
json j_object = R"( {"key": "value"} )"_json;
json j_array = R"( [1, 2, 3] )"_json;
// call contains
std::cout << std::boolalpha <<
"j_object contains 'key': " << j_object.contains("key") << '\n' <<
"j_object contains 'another': " << j_object.contains("another") << '\n' <<
"j_array contains 'key': " << j_array.contains("key") << std::endl;
}
Output:
j_object contains 'key': true
j_object contains 'another': false
j_array contains 'key': false
Example (1) check with JSON pointer
The example shows how contains() is used.
#include <iostream>
#include <nlohmann/json.hpp>
using json = nlohmann::json;
int main()
{
// create a JSON value
json j =
{
{"number", 1}, {"string", "foo"}, {"array", {1, 2}}
};
std::cout << std::boolalpha
<< j.contains("/number"_json_pointer) << '\n'
<< j.contains("/string"_json_pointer) << '\n'
<< j.contains("/array"_json_pointer) << '\n'
<< j.contains("/array/1"_json_pointer) << '\n'
<< j.contains("/array/-"_json_pointer) << '\n'
<< j.contains("/array/4"_json_pointer) << '\n'
<< j.contains("/baz"_json_pointer) << std::endl;
try
{
// try to use an array index with leading '0'
j.contains("/array/01"_json_pointer);
}
catch (json::parse_error& e)
{
std::cout << e.what() << '\n';
}
try
{
// try to use an array index that is not a number
j.contains("/array/one"_json_pointer);
}
catch (json::parse_error& e)
{
std::cout << e.what() << '\n';
}
}
Output:
true
true
true
true
false
false
false
Version history¶
- Added in version 3.6.0.
- Added in version 3.7.0.