Skip to content


basic_json flatten() const;

The function creates a JSON object whose keys are JSON pointers (see RFC 6901) and whose values are all primitive (see is_primitive() for more information). The original JSON value can be restored using the unflatten() function.

Return value

an object that maps JSON pointers to primitive values

Exception safety

Strong exception safety: if an exception occurs, the original value stays intact.


Linear in the size the JSON value.


Empty objects and arrays are flattened to null and will not be reconstructed correctly by the unflatten() function.



The following code shows how a JSON object is flattened to an object whose keys consist of JSON pointers.

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

using json = nlohmann::json;

int main()
    // create JSON value
    json j =
        {"pi", 3.141},
        {"happy", true},
        {"name", "Niels"},
        {"nothing", nullptr},
            "answer", {
                {"everything", 42}
        {"list", {1, 0, 2}},
            "object", {
                {"currency", "USD"},
                {"value", 42.99}

    // call flatten()
    std::cout << std::setw(4) << j.flatten() << '\n';


    "/answer/everything": 42,
    "/happy": true,
    "/list/0": 1,
    "/list/1": 0,
    "/list/2": 2,
    "/name": "Niels",
    "/nothing": null,
    "/object/currency": "USD",
    "/object/value": 42.99,
    "/pi": 3.141

Version history

  • Added in version 2.0.0.