mirror of
https://github.com/nlohmann/json.git
synced 2026-09-26 03:55:48 +00:00
75 lines
2.2 KiB
Markdown
75 lines
2.2 KiB
Markdown
# <small>nlohmann::basic_json::</small>get_to
|
|
|
|
```cpp
|
|
template<typename ValueType>
|
|
ValueType& get_to(ValueType& v) const noexcept(
|
|
noexcept(JSONSerializer<ValueType>::from_json(
|
|
std::declval<const basic_json_t&>(), v)));
|
|
```
|
|
|
|
Explicit type conversion between the JSON value and a compatible value. The value is filled into the input parameter by
|
|
calling the `json_serializer<ValueType>` `from_json()` method.
|
|
|
|
The function is equivalent to executing
|
|
```cpp
|
|
ValueType v;
|
|
JSONSerializer<ValueType>::from_json(*this, v);
|
|
```
|
|
|
|
This overload is chosen if:
|
|
|
|
- `ValueType` is not `basic_json`,
|
|
- `json_serializer<ValueType>` has a `from_json()` method of the form `void from_json(const basic_json&, ValueType&)`
|
|
|
|
`v` must not be `const`. Passing a `const` object is a compile-time error. For types such as arithmetic types, enums,
|
|
and C arrays, the error is a `static_assert` that names the problem. For other types, the overload is not viable, and
|
|
the compiler reports that no matching `get_to` was found.
|
|
|
|
## Template parameters
|
|
|
|
`ValueType`
|
|
: the value type to return
|
|
|
|
## Return value
|
|
|
|
the input parameter, allowing chaining calls
|
|
|
|
## Exceptions
|
|
|
|
Depends on what `json_serializer<ValueType>` `from_json()` method throws
|
|
|
|
## Complexity
|
|
|
|
Depends on the `json_serializer<ValueType>::from_json()` implementation.
|
|
|
|
## Examples
|
|
|
|
??? example
|
|
|
|
The example below shows several conversions from JSON values to other types. There a few things to note: (1)
|
|
Floating-point numbers can be converted to integers, (2) A JSON array can be converted to a standard
|
|
`#!cpp std::vector<short>`, (3) A JSON object can be converted to C++ associative containers such as
|
|
`#cpp std::unordered_map<std::string, json>`.
|
|
|
|
```cpp
|
|
--8<-- "examples/get_to.cpp"
|
|
```
|
|
|
|
Output:
|
|
|
|
```json
|
|
--8<-- "examples/get_to.output"
|
|
```
|
|
|
|
## See also
|
|
|
|
- [get](get.md) get a value (explicit conversion)
|
|
- [get_ref](get_ref.md) get a reference to the stored value
|
|
- [get_ptr](get_ptr.md) get a pointer to the stored value
|
|
- [Converting values](../../features/conversions.md) - the type conversions article
|
|
|
|
## Version history
|
|
|
|
- Since version 3.3.0.
|
|
- Added a `static_assert` with a clear message for `const` arguments in version 3.13.0.
|