Files
json/docs/mkdocs/docs/api/is_json_view.md
T
Niels Lohmann 94fe31eb9b docs: writing generic code for json_view (#5924)
* docs: writing generic code for json_view

A "Writing generic code" section on the json_view page: why a function
taking json_view accepts no other view, the three signatures for
editable, read-only, or either kind of view (passed by value), why the
modes do not convert, is_json_view, and how a from_json() reads views
(constrained to json values and views; the macros and the library's
conversions do it already) with what differs then (duplicate keys,
JSON_DIAGNOSTICS paths).

Signed-off-by: Niels Lohmann <mail@nlohmann.me>

* docs: name the documents the generic view function accepts

Signed-off-by: Niels Lohmann <mail@nlohmann.me>

* docs: views of read-only documents convert to editable views

Signed-off-by: Niels Lohmann <mail@nlohmann.me>

---------

Signed-off-by: Niels Lohmann <mail@nlohmann.me>
2026-10-26 20:13:32 +01:00

1.8 KiB

nlohmann::is_json_view

Defined in header <nlohmann/json_view.hpp>

template<typename T>
struct is_json_view;

A type trait: #!cpp is_json_view<T>::value is #!cpp true if T is a basic_json_view of any BasicJsonType and any view_mode -- json_view, json_editable_view, ordered_json_view, ... -- and #!cpp false otherwise, for basic_json as well.

It is meant for constraining templates that accept views, in particular a from_json() that should read views directly: get<T>() on a view calls a from_json() with the view only if that from_json() accepts views but not arbitrary types.

Template parameters

T
the type to check (without cv-qualifiers or references)

Notes

A view is recognized by its member type basic_json_type (a basic_json specialization) and its materialize() returning that type, so the trait needs no declaration of the view class.

Examples

??? example

The example below shows the trait, and a `from_json()` constrained to `json` values and views: `get<T>()` on a view
reads the view directly.

```cpp
--8<-- "examples/is_json_view.cpp"
```

Output:

```
--8<-- "examples/is_json_view.output"
```

See also

Version history

Added in version 3.13.0.