# nlohmann::basic_json::json_serializer ```cpp template using json_serializer = JSONSerializer; ``` ## Template parameters `T` : type to convert; will be used in the `to_json`/`from_json` functions `SFINAE` : type to add compile type checks via SFINAE; usually `#!cpp void` ## Notes ### Default type The default values for `json_serializer` is [`adl_serializer`](../adl_serializer/index.md). ### Requirements A custom serializer must provide `#!cpp static void to_json(basic_json&, T)` for every type it serializes, and either `#!cpp static void from_json(const basic_json&, T&)` or `#!cpp static T from_json(const basic_json&)` for every type it deserializes. See [Template Parameter Requirements](../../features/types/template_parameters.md#jsonserializer). ## Examples ??? example The example below shows how a conversion of a non-default-constructible type is implemented via a specialization of the `adl_serializer`. ```cpp --8<-- "examples/from_json__non_default_constructible.cpp" ``` Output: ```json --8<-- "examples/from_json__non_default_constructible.output" ``` ## See also - [adl_serializer](../adl_serializer/index.md) the default `json_serializer` - [get](get.md) explicit type conversion using the `json_serializer`'s `from_json()` method - [get_to](get_to.md) explicit type conversion into a variable using the `json_serializer`'s `from_json()` method - [Arbitrary Type Conversions](../../features/arbitrary_types.md) - the article on converting between JSON values and arbitrary types ## Version history - Since version 2.0.0.