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>
Returns a reference to the element at with specified key key, with bounds checking.
- Parameters
-
[in] | key | key of the element to access |
- Returns
- reference to the element at key key
- Exceptions
-
type_error.304 | if the JSON value is not an object; in this case, calling at with a key makes no sense. See example below. |
out_of_range.403 | if the key key is is not stored in the object; that is, find(key) == end() . See example below. |
- Exception safety^^ Strong guarantee: if an exception is thrown, there are no
- changes in the JSON value.
- Complexity^^ Logarithmic in the size of the container.
- See also
- operator[](const typename object_t::key_type&) for unchecked access by reference
-
value() for access by value with a default value
- Since
- version 1.0.0
- Example^^ The example below shows how object elements can be read and
- written using
at()
. It also demonstrates the different exceptions that can be thrown. ^^ 2 #include <nlohmann/json.hpp> 11 {
"the good",
"il buono"},
12 {
"the bad",
"il cattivo"},
13 {
"the ugly",
"il brutto"}
17 std::cout <<
object.at(
"the ugly") <<
'\n';
20 object.at(
"the bad") =
"il cattivo";
23 std::cout <<
object <<
'\n';
30 json str =
"I am a string";
31 str.at(
"the good") =
"Another string";
35 std::cout << e.what() <<
'\n';
42 object.at(
"the fast") =
"il rapido";
46 std::cout << e.what() <<
'\n';
basic_json<> json
default JSON class
detail::out_of_range out_of_range
exception indicating access out of the defined range
detail::type_error type_error
exception indicating executing a member function with a wrong type
Output (play with this example online):^^ "il brutto"
{"the bad":"il cattivo","the good":"il buono","the ugly":"il brutto"}
[json.exception.type_error.304] cannot use at() with string
[json.exception.out_of_range.403] key 'the fast' not found
^^ The example code above can be translated withg++ -std=c++11 -Isingle_include doc/examples/at__object_t_key_type.cpp -o at__object_t_key_type
Definition at line 15396 of file json.hpp.