|
◆ value() [2/4]
template<class ValueType , typename std::enable_if< std::is_convertible< basic_json_t, ValueType >::value, int >::type = 0>
ValueType nlohmann::basic_json::value |
( |
const json_pointer & |
ptr, |
|
|
const ValueType & |
default_value |
|
) |
| const |
|
inline |
Returns either a copy of an object's element at the specified key key or a given default value if no element with key key exists.
The function is basically equivalent to executing try {
return default_value;
}
- Note
- Unlike at(const json_pointer&), this function does not throw if the given key key was not found.
- Parameters
-
[in] | ptr | a JSON pointer to the element to access |
[in] | default_value | the value to return if ptr found no value |
- Template Parameters
-
ValueType | type compatible to JSON values, for instance int for JSON integer numbers, bool for JSON booleans, or std::vector types for JSON arrays. Note the type of the expected value at key and the default value default_value must be compatible. |
- Returns
- copy of the element at key key or default_value if key is not found
- Exceptions
-
type_error.302 | if default_value does not match the type of the value at ptr |
type_error.306 | if the JSON value is not an object; in that case, using value() with a key makes no sense. |
- Complexity
- Logarithmic in the size of the container.
- Example
- The example below shows how object elements can be queried with a default value.
2 #include <nlohmann/json.hpp>
13 { "string", "hello world"},
15 { "object", {{ "key1", 1}, { "key2", 2}}},
20 int v_integer = j.value( "/integer"_json_pointer, 0);
21 double v_floating = j.value( "/floating"_json_pointer, 47.11);
24 std::string v_string = j.value( "/nonexisting"_json_pointer, "oops");
25 bool v_boolean = j.value( "/nonexisting"_json_pointer, false);
28 std::cout << std::boolalpha << v_integer << " " << v_floating
29 << " " << v_string << " " << v_boolean << "\n";
Output (play with this example online): 1 42.23 oops false
The example code above can be translated withg++ -std=c++11 -Isingle_include doc/examples/basic_json__value_ptr.cpp -o basic_json__value_ptr
- See also
- operator[](const json_pointer&) for unchecked access by reference
- Since
- version 2.0.2
Definition at line 18085 of file json.hpp.
|