JSON for Modern C++ 2.1.1
Loading...
Searching...
No Matches

◆ 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< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::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\n Linear in the size the JSON value.
Example\n The following code shows how a JSON object is flattened to an
object whose keys consist of JSON pointers.
1#include <json.hpp>
2
3using json = nlohmann::json;
4
5int main()
6{
7 // create JSON value
8 json j =
9 {
10 {"pi", 3.141},
11 {"happy", true},
12 {"name", "Niels"},
13 {"nothing", nullptr},
14 {
15 "answer", {
16 {"everything", 42}
17 }
18 },
19 {"list", {1, 0, 2}},
20 {
21 "object", {
22 {"currency", "USD"},
23 {"value", 42.99}
24 }
25 }
26 };
27
28 // call flatten()
29 std::cout << std::setw(4) << j.flatten() << '\n';
30}
static basic_json array(std::initializer_list< basic_json > init=std::initializer_list< basic_json >())
explicitly create an array from an initializer list
Definition json.hpp:2165
basic_json flatten() const
return flattened JSON value
Definition json.hpp:11845
a class to store JSON values
Definition json.hpp:1040
basic_json<> json
default JSON class
Definition json.hpp:12369

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 -Isrc doc/examples/flatten.cpp -o flatten 
See also
unflatten() for the reverse function
Since
version 2.0.0

Definition at line 11845 of file json.hpp.