mirror of
https://github.com/nlohmann/json.git
synced 2026-10-11 11:25:16 +00:00
basic_json_document gets a second template parameter, Editable (false by default), plus the aliases json_editable_document, json_editable_view, ordered_json_editable_document and ordered_json_editable_view. Editable documents can change values and structure without rewriting the source text: set()/push_back() on values, keys, array indices and JSON pointers; insert() before an array element; erase() of an object key, array index or JSON pointer. New values and element sequences go into edit storage that the document owns and never moves, so views keep referring to their value across edits and a parsed node never moves. Read-only documents walk the plain node array and are unaffected. Strings are checked for UTF-8 on entry, so dump() of an editable document never throws type_error.316. Binary values cannot be stored (type_error.319). A seeded differential test applies random edits to an editable document and to the equivalent ordered_json and compares both after every step. Signed-off-by: Niels Lohmann <mail@nlohmann.me>
1.8 KiB
1.8 KiB
nlohmann::ordered_json_editable_document
Defined in header <nlohmann/json_view.hpp>
using ordered_json_editable_document = basic_json_document<ordered_json, true>;
This type is an editable basic_json_document of the
ordered_json specialization: set and
push_back change values after parsing, as for
json_editable_document, and
materialize() preserves the document order of object members -- including
members set added -- instead of sorting them like
json_editable_document does.
Examples
??? example
The example below edits a document with `set`, then shows that `materialize()` keeps the member order of the
source text (with the new member at the end) for `ordered_json_editable_document`, where it would sort the
members alphabetically for [`json_editable_document`](json_editable_document.md).
```cpp
--8<-- "examples/ordered_json_editable_document.cpp"
```
Output:
```json
--8<-- "examples/ordered_json_editable_document.output"
```
See also
- ordered_json_editable_view - a view of a value of an
ordered_json_editable_document - ordered_json_document - the read-only document this type adds edits to
- json_editable_document - the corresponding editable document for the default
jsonspecialization - Object Order
- Edits - what an edit guarantees
Version history
Since version 3.13.0.