# nlohmann::adl_serializer::to_json
```cpp
template
static auto to_json(BasicJsonType& j, TargetType && val) noexcept(
noexcept(::nlohmann::to_json(j, std::forward(val))))
-> decltype(::nlohmann::to_json(j, std::forward(val)), void())
```
This function is usually called by the constructors of the [basic_json](../basic_json/index.md) class.
## Parameters
`j` (out)
: JSON value to write to
`val` (in)
: value to read from
## Examples
??? example
The example below shows how a `to_json` function can be implemented for a user-defined type. This function is called
by the `adl_serializer` when the constructor `basic_json(ns::person)` is called.
```cpp
--8<-- "examples/to_json.cpp"
```
Output:
```json
--8<-- "examples/to_json.output"
```
## See also
- [from_json](from_json.md)
## Version history
- Added in version 2.1.0.