JSON for Modern C++  2.1.1

◆ at() [1/6]

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>
reference nlohmann::basic_json::at ( size_type  idx)
inline

Returns a reference to the element at specified location idx, with bounds checking.

Parameters
[in]idxindex of the element to access
Returns
reference to the element at index idx
Exceptions
type_error.304if the JSON value is not an array; in this case, calling at with an index makes no sense. See example below.
out_of_range.401if the index idx is out of range of the array; that is, idx >= size(). See example below.
Exception safety
Strong guarantee: if an exception is thrown, there are no changes in the JSON value.
Complexity
Constant.
Since
version 1.0.0
Example
The example below shows how array elements can be read and written using at(). It also demonstrates the different exceptions that can be thrown.
1 #include "json.hpp"
2 
3 using json = nlohmann::json;
4 
5 int main()
6 {
7  // create JSON array
8  json array = {"first", "2nd", "third", "fourth"};
9 
10  // output element at index 2 (third element)
11  std::cout << array.at(2) << '\n';
12 
13  // change element at index 1 (second element) to "second"
14  array.at(1) = "second";
15 
16  // output changed array
17  std::cout << array << '\n';
18 
19 
20  // exception type_error.304
21  try
22  {
23  // use at() on a non-array type
24  json str = "I am a string";
25  str.at(0) = "Another string";
26  }
27  catch (json::type_error& e)
28  {
29  std::cout << e.what() << '\n';
30  }
31 
32  // exception out_of_range.401
33  try
34  {
35  // try to write beyond the array limit
36  array.at(5) = "sixth";
37  }
38  catch (json::out_of_range& e)
39  {
40  std::cout << e.what() << '\n';
41  }
42 }
basic_json<> json
default JSON class
Definition: json.hpp:13933
reference at(size_type idx)
access specified array element with bounds checking
Definition: json.hpp:3780
detail::out_of_range out_of_range
exception indicating access out of the defined range
Definition: json.hpp:1324
detail::type_error type_error
exception indicating executing a member function with a wrong type
Definition: json.hpp:1322
static basic_json array(std::initializer_list< basic_json > init=std::initializer_list< basic_json >())
explicitly create an array from an initializer list
Definition: json.hpp:2435
Output (play with this example online):
"third"
["first","second","third","fourth"]
[json.exception.type_error.304] cannot use at() with string
[json.exception.out_of_range.401] array index 5 is out of range
The example code above can be translated with
g++ -std=c++11 -Isrc doc/examples/at__size_type.cpp -o at__size_type 

Definition at line 3780 of file json.hpp.