3.0 KiB
nlohmann::view_mode
Defined in header <nlohmann/json_view.hpp>
enum class view_mode : std::uint8_t
{
read_only,
editable
};
The second template parameter of basic_json_document and
basic_json_view: whether a document can be changed after parsing, and whether a view is
of such a document.
read_only- the default: the document is parsed once and then only read. It carries none of the bookkeeping edits need, and
calling
set,push_back,insert, oreraseon it fails to compile. editable- the document also offers
set,push_back,insert, anderase; its views see every edit, see Edits.
The shortcuts name both modes: json_document and json_view are read-only,
json_editable_document and json_editable_view are editable
(and likewise for ordered_json).
Notes
The mode is a compile-time property of the document's and the view's type, not a setting of a call, and there is no conversion between the two modes: a read-only view reads a container in place, while a view of an editable document follows the links that edits leave behind. A function that accepts views therefore names the modes it accepts in its signature:
// views of editable documents only
template<typename BasicJsonType>
void f(basic_json_view<BasicJsonType, view_mode::editable> v);
// views of read-only documents only
template<typename BasicJsonType>
void f(basic_json_view<BasicJsonType, view_mode::read_only> v);
// views of either document type
template<typename BasicJsonType, view_mode Mode>
void f(basic_json_view<BasicJsonType, Mode> v);
A function that takes a json_view accepts neither an ordered_json_view
nor a json_editable_view. Views of the two modes still compare with
operator==.
Examples
??? example
The example below shows a function template that accepts the views of both modes, and one that accepts only
views of editable documents.
```cpp
--8<-- "examples/view_mode.cpp"
```
Output:
```
--8<-- "examples/view_mode.output"
```
See also
- basic_json_document - a parsed JSON text
- basic_json_view - a handle to one value of a document
- json_editable_document - an editable document of
json - Writing generic code - functions that accept views
Version history
Added in version 3.13.0.