JSON for Modern C++  3.7.0

◆ push_back() [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, template< typename T, typename SFINAE=void > class JSONSerializer = adl_serializer>
void nlohmann::basic_json::push_back ( initializer_list_t  init)
inline

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
[in]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 <iostream>
2 #include <nlohmann/json.hpp>
3 
4 using json = nlohmann::json;
5 
6 int main()
7 {
8  // create JSON values
9  json object = {{"one", 1}, {"two", 2}};
10  json null;
11 
12  // print values
13  std::cout << object << '\n';
14  std::cout << null << '\n';
15 
16  // add values:
17  object.push_back({"three", 3}); // object is extended
18  object += {"four", 4}; // object is extended
19  null.push_back({"five", 5}); // null is converted to array
20 
21  // print values
22  std::cout << object << '\n';
23  std::cout << null << '\n';
24 
25  // would throw:
26  //object.push_back({1, 2, 3});
27 }
basic_json<> json
default JSON class
Definition: json.hpp:2355

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 -Isingle_include doc/examples/push_back__initializer_list.cpp -o push_back__initializer_list 

Definition at line 19374 of file json.hpp.