JSON for Modern C++ 3.10.4

◆ at() [6/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, class BinaryType = std::vector<std::uint8_t>>
const_reference nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType >::at ( size_type  idx) const

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

[in]idxindex of the element to access
const reference to the element at index idx
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.
version 1.0.0
The example below shows how array elements can be read using at(). It also demonstrates the different exceptions that can be thrown.
1#include <iostream>
2#include <nlohmann/json.hpp>
4using json = nlohmann::json;
6int main()
8 // create JSON array
9 const json array = {"first", "2nd", "third", "fourth"};
11 // output element at index 2 (third element)
12 std::cout << array.at(2) << '\n';
15 // exception type_error.304
16 try
17 {
18 // use at() on a non-array type
19 const json str = "I am a string";
20 std::cout << str.at(0) << '\n';
21 }
22 catch (json::type_error& e)
23 {
24 std::cout << e.what() << '\n';
25 }
27 // exception out_of_range.401
28 try
29 {
30 // try to read beyond the array limit
31 std::cout << array.at(5) << '\n';
32 }
33 catch (json::out_of_range& e)
34 {
35 std::cout << e.what() << '\n';
36 }
detail::out_of_range out_of_range
exception indicating access out of the defined range
Definition: json.hpp:17771
detail::type_error type_error
exception indicating executing a member function with a wrong type
Definition: json.hpp:17769
basic_json<> json
default JSON class
Definition: json.hpp:3472

Output (play with this example online):
[json.exception.type_error.304] cannot use at() with string
[json.exception.out_of_range.401] array index 5 is out of range
The <a href= https://github.com/nlohmann/json/blob/develop/doc/examples/ at__size_type_const.cpp>example code above can be translated with
g++ -std=c++11 -Isingle_include doc/examples/
at__size_type_const.cpp -o 

Definition at line 21039 of file json.hpp.