JSON for Modern C++  2.0.0
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>
reference nlohmann::basic_json::operator+= ( std::initializer_list< basic_json init)
inline

add an object to an object This function allows to use push_back with an initializer list. In case

  1. the current value is an object,
  2. the initializer list init contains only two elements, and
  3. the first element of init is a string,

init is converted into an object element and added using push_back(const typename object_t::value_type&). Otherwise, init is converted to a JSON value and added using push_back(basic_json&&).

Parameters
initan initializer list
Complexity
Linear in the size of the initializer list init.
Note
This function is required to resolve an ambiguous overload error, because pairs like {"key", "value"} can be both interpreted as object_t::value_type or std::initializer_list<basic_json>, see https://github.com/nlohmann/json/issues/235 for more information.
Example
The example shows how initializer lists are treated as objects when possible.
1 #include <json.hpp>
2 
3 using json = nlohmann::json;
4 
5 int main()
6 {
7  // create JSON values
8  json object = {{"one", 1}, {"two", 2}};
9  json null;
10 
11  // print values
12  std::cout << object << '\n';
13  std::cout << null << '\n';
14 
15  // add values:
16  object.push_back({"three", 3}); // object is extended
17  object += {"four", 4}; // object is extended
18  null.push_back({"five", 5}); // null is converted to array
19 
20  // print values
21  std::cout << object << '\n';
22  std::cout << null << '\n';
23 
24  // would throw:
25  //object.push_back({1, 2, 3});
26 }
basic_json<> json
default JSON class
Definition: json.hpp:9587
Output (play with this example online):
{"one":1,"two":2}
null
{"four":4,"one":1,"three":3,"two":2}
[["five",5]]
The example code above can be translated with
g++ -std=c++11 -Isrc doc/examples/push_back__initializer_list.cpp -o push_back__initializer_list 

Definition at line 4866 of file json.hpp.