Skip to content


static basic_json object(initializer_list_t init = {});

Creates a JSON object value from a given initializer list. The initializer lists elements must be pairs, and their first elements must be strings. If the initializer list is empty, the empty object {} is created.


init (in)
initializer list with JSON values to create an object from (optional)

Return value

JSON object value

Exception safety

Strong guarantee: if an exception is thrown, there are no changes in the JSON value.


Throws type_error.301 if init is not a list of pairs whose first elements are strings. In this case, no object can be created. When such a value is passed to basic_json(initializer_list_t, bool, value_t), an array would have been created from the passed initializer list init. See example below.


Linear in the size of init.


This function is only added for symmetry reasons. In contrast to the related function array(initializer_list_t), there are no cases which can only be expressed by this function. That is, any initializer list init can also be passed to the initializer list constructor basic_json(initializer_list_t, bool, value_t).



The following code shows an example for the object function.

#include <iostream>
#include <nlohmann/json.hpp>

using json = nlohmann::json;

int main()
    // create JSON objects
    json j_no_init_list = json::object();
    json j_empty_init_list = json::object({});
    json j_list_of_pairs = json::object({ {"one", 1}, {"two", 2} });

    // serialize the JSON objects
    std::cout << j_no_init_list << '\n';
    std::cout << j_empty_init_list << '\n';
    std::cout << j_list_of_pairs << '\n';

    // example for an exception
        // can only create an object from a list of pairs
        json j_invalid_object = json::object({{ "one", 1, 2 }});
    catch (const json::type_error& e)
        std::cout << e.what() << '\n';


[json.exception.type_error.301] cannot create object from initializer list

See also

Version history

  • Added in version 1.0.0.

Last update: May 1, 2022