# nlohmann::ordered_json

```
using ordered_json = basic_json<ordered_map>;
```

This type preserves the insertion order of object keys.

## Iterator invalidation

The type is based on [`ordered_map`](https://json.nlohmann.me/api/ordered_map/index.md) which in turn uses a `std::vector` to store object elements. Therefore, adding object elements can yield a reallocation in which case all iterators (including the [`end()`](https://json.nlohmann.me/api/basic_json/end/index.md) iterator) and all references to the elements are invalidated. Also, any iterator or reference after the insertion point will point to the same index, which is now a different value.

## Examples

Example

The example below demonstrates how `ordered_json` preserves the insertion order of object keys.

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

using ordered_json = nlohmann::ordered_json;

int main()
{
    ordered_json j;
    j["one"] = 1;
    j["two"] = 2;
    j["three"] = 3;

    std::cout << j.dump(2) << '\n';
}
```

Output:

```
{
  "one": 1,
  "two": 2,
  "three": 3
}
```

## See also

- [ordered_map](https://json.nlohmann.me/api/ordered_map/index.md)
- [Object Order](https://json.nlohmann.me/features/object_order/index.md)

## Version history

Since version 3.9.0.
