# Encodeur compatible JSON { #json-compatible-encoder }

Il existe des cas où vous pourriez avoir besoin de convertir un type de données (comme un modèle Pydantic) en quelque chose de compatible avec JSON (comme un `dict`, `list`, etc.).

Par exemple, si vous devez le stocker dans une base de données.

Pour cela, **FastAPI** fournit une fonction `jsonable_encoder()`.

## Utiliser `jsonable_encoder` { #using-the-jsonable-encoder }

Imaginons que vous ayez une base de données `fake_db` qui ne reçoit que des données compatibles JSON.

Par exemple, elle ne reçoit pas d'objets `datetime`, car ceux-ci ne sont pas compatibles avec JSON.

Ainsi, un objet `datetime` doit être converti en une `str` contenant les données au [format ISO](https://en.wikipedia.org/wiki/ISO_8601).

De la même manière, cette base de données n'accepterait pas un modèle Pydantic (un objet avec des attributs), seulement un `dict`.

Vous pouvez utiliser `jsonable_encoder` pour cela.

Elle reçoit un objet, comme un modèle Pydantic, et renvoie une version compatible JSON :

{* ../../docs_src/encoder/tutorial001_py310.py hl[4,21] *}

Dans cet exemple, elle convertirait le modèle Pydantic en `dict`, et le `datetime` en `str`.

Le résultat de son appel est quelque chose qui peut être encodé avec la fonction standard de Python [`json.dumps()`](https://docs.python.org/3/library/json.html#json.dumps).

Elle ne renvoie pas une grande `str` contenant les données au format JSON (sous forme de chaîne). Elle renvoie une structure de données standard de Python (par ex. un `dict`) avec des valeurs et sous-valeurs toutes compatibles avec JSON.

/// note | Remarque

`jsonable_encoder` est en fait utilisée par **FastAPI** en interne pour convertir des données. Mais elle est utile dans de nombreux autres scénarios.

///
