JSON for Modern C++  3.7.0

◆ 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>
basic_json nlohmann::basic_json::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 
5 using json = nlohmann::json;
6 
7 int 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:2355

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
unflatten() for the reverse function
Since
version 2.0.0

Definition at line 21838 of file json.hpp.