# `JSV.Normalizer.Normalize`
[🔗](https://github.com/lud/jsv/blob/v0.23.0/lib/jsv/normalizer/normalize.ex#L1)

Protocol used by `JSV.Normalizer` to transform structs into JSON-compatible
data structures when normalizing a schema.

When implementing this protocol you do not need to run any specific
normalization by yourself, but rather just return a map with all or a
selection of keys. Keys can be atoms or binaries, and values will be
normalized recursively.

# `t`

```elixir
@type t() :: term()
```

All the types that implement this protocol.

# `normalize`

```elixir
@spec normalize(term()) :: term()
```

Returns a JSON-compatible representation of the given term. Maps returned
from this function can have atom or binary keys and their values are
normalized recursively.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
