# ordered_json - JSON for Modern C++
Author: Niels Lohmann

Skip to content

# 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` 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()` 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
- Object Order

## Version history

Since version 3.9.0.

November 12, 2025