# basic_json::flatten ```cpp basic_json flatten() const; ``` The function creates a JSON object whose keys are JSON pointers (see [RFC 6901](https://tools.ietf.org/html/rfc6901)) and whose values are all primitive (see [`is_primitive()`](is_primitive.md) for more information). The original JSON value can be restored using the [`unflatten()`](unflatten.md) 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. ## Complexity Linear in the size the JSON value. ## Notes Empty objects and arrays are flattened to `#!json null` and will not be reconstructed correctly by the [`unflatten()`](unflatten.md) function. ## Example ??? example The following code shows how a JSON object is flattened to an object whose keys consist of JSON pointers. ```cpp --8<-- "examples/flatten.cpp" ``` Output: ```json --8<-- "examples/flatten.output" ``` ## Version history - Added in version 2.0.0.