JSON for Modern C++  2.0.6

§ value() [4/4]

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>
string_t nlohmann::basic_json::value ( const json_pointer ptr,
const char *  default_value 
) const
inline

access specified object element via JSON Pointer with default value 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 at(ptr);
} catch(std::out_of_range) {
return default_value;
}
Note
Unlike at(const json_pointer&), this function does not throw if the given key key was not found.
Parameters
[in]ptra JSON pointer to the element to access
[in]default_valuethe value to return if ptr found no value
Template Parameters
ValueTypetype 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
std::domain_errorif JSON is not an object; example: "cannot use value() with null"
Complexity
Logarithmic in the size of the container.
Example
The example below shows how object elements can be queried with a default value.
1 #include <json.hpp>
2 
3 using json = nlohmann::json;
4 
5 int main()
6 {
7  // create a JSON object with different entry types
8  json j =
9  {
10  {"integer", 1},
11  {"floating", 42.23},
12  {"string", "hello world"},
13  {"boolean", true},
14  {"object", {{"key1", 1}, {"key2", 2}}},
15  {"array", {1, 2, 3}}
16  };
17 
18  // access existing values
19  int v_integer = j.value("/integer"_json_pointer, 0);
20  double v_floating = j.value("/floating"_json_pointer, 47.11);
21 
22  // access nonexisting values and rely on default value
23  std::string v_string = j.value("/nonexisting"_json_pointer, "oops");
24  bool v_boolean = j.value("/nonexisting"_json_pointer, false);
25 
26  // output values
27  std::cout << std::boolalpha << v_integer << " " << v_floating
28  << " " << v_string << " " << v_boolean << "\n";
29 }
basic_json<> json
default JSON class
Definition: json.hpp:10155
Output (play with this example online):
1 42.23 oops false
The example code above can be translated with
g++ -std=c++11 -Isrc 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 3798 of file json.hpp.