JSON for Modern C++ 3.10.4

◆ flatten()

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>>
basic_json nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType >::flatten ( ) const
inline

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

Returns
an object that maps JSON pointers to primitive values
Note
Empty objects and arrays are flattened to null and will not be reconstructed correctly by the unflatten() function.
Complexity
Linear in the size the JSON value.
Example
The following code shows how a JSON object is flattened to an object whose keys consist of JSON pointers.
1#include <iostream>
2#include <iomanip>
3#include <nlohmann/json.hpp>
4
5using json = nlohmann::json;
6
7int main()
8{
9 // create JSON value
10 json j =
11 {
12 {"pi", 3.141},
13 {"happy", true},
14 {"name", "Niels"},
15 {"nothing", nullptr},
16 {
17 "answer", {
18 {"everything", 42}
19 }
20 },
21 {"list", {1, 0, 2}},
22 {
23 "object", {
24 {"currency", "USD"},
25 {"value", 42.99}
26 }
27 }
28 };
29
30 // call flatten()
31 std::cout << std::setw(4) << j.flatten() << '\n';
32}
basic_json<> json
default JSON class
Definition: json.hpp:3472

Output (play with this example online):
{
    "/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
}
The example code above can be translated with
g++ -std=c++11 -Isingle_include doc/examples/flatten.cpp -o flatten 
See also
see unflatten() for the reverse function
Since
version 2.0.0

Definition at line 25854 of file json.hpp.