Transformez un échantillon JSON en dataclasses, modèles Pydantic ou TypedDict Python avec annotations de type
Fonctionne dans votre navigateur. Rien de ce que vous saisissez n'est envoyé nulle part. Vérifié le 16 octobre 2026.Collez un échantillon JSON et obtenez des dataclasses, des modèles Pydantic v2 ou des TypedDict Python avec annotations de type. Les nombres entiers deviennent int et la moindre décimale rend un champ float ; une valeur null ou absente devient str | None avec None par défaut, et les 3 styles de classe partagent la même inférence.
Cette page a été traduite automatiquement à partir de l'original anglais. Aucune personne n’a encore relu la traduction : c’est la version anglaise qui fait foi. Lire l'original en anglais
Collez un échantillon JSON, par exemple une réponse d'API, dans la zone de gauche.
Les classes Python apparaissent pendant la saisie : une classe par objet, avec des annotations comme int, float, list[str] et str | None.
Choisissez dataclass, Pydantic ou TypedDict, et le typage Python 3.9 si votre projet est antérieur à 3.10.
Cliquez sur Copier, ou sur Télécharger pour enregistrer models.py.
Python lit le JSON sous forme de dictionnaires, et c'est une classe annotée qui permet à un éditeur, à un vérificateur de types ou à Pydantic de repérer une clé mal orthographiée ou un mauvais type. Ce convertisseur écrit ces classes à partir d'un échantillon : une longue réponse d'API devient du Python typé en un seul collage.
Comment les types sont choisis.
| Valeur JSON | Type Python |
|---|---|
| "text" | str |
| true / false | bool |
| 42 (nombres entiers uniquement) | int |
| 4.5 (au moins une décimale vue) | float |
| null, plus un type | str | None, ou Optional[str] |
| null seul, ou types mélangés | Any |
| [ ... ] | list[...] |
| { } vide | dict[str, Any] |
| { ... } | une classe à part |
Tableaux d'objets. Tous les objets d'un tableau sont fusionnés en une seule classe : une clé présente dans certains seulement reste là, avec un type qui admet None et None comme valeur par défaut. Deux objets ayant exactement les mêmes clés et types partagent une classe.
Trois styles. Une dataclass ne demande aucune installation ; les champs avec valeur par défaut sont placés après les autres, sinon Python lève une TypeError. Les modèles Pydantic utilisent des attributs en snake_case avec Field(alias=...) pour les clés écrites autrement, comme userName ou first-name. Un TypedDict garde les clés telles quelles et marque NotRequired celles qui n'apparaissent que parfois.
Ordre et noms. Les classes sont écrites en commençant par les enfants, si bien que chaque nom est défini avant d'être utilisé. Un mot-clé comme class devient class_, et une clé qui masquerait un type, comme list, reçoit le même tiret bas.
Chaque style a été vérifié en exécutant le résultat sous CPython avec Pydantic 2 et en validant l'échantillon. Rien de ce que vous collez ne quitte le navigateur.
Collez un échantillon JSON dans le convertisseur et les classes Python apparaissent à côté, une par objet, avec une annotation de type sur chaque attribut. Choisissez dataclass pour des classes simples, Pydantic pour la validation ou TypedDict pour continuer à travailler avec des dictionnaires ordinaires, puis copiez le module dans votre projet.
Une dataclass convient aux données que vous construisez vous-même et ne demande aucune bibliothèque. Pydantic convient aux données venues de l'extérieur, comme les réponses d'API, car il vérifie chaque valeur et convertit les objets imbriqués pour vous. Un TypedDict ajoute seulement des annotations au dictionnaire renvoyé par json.loads et ne coûte rien à l'exécution.
Les attributs Pydantic sont écrits en snake_case, comme le demande la PEP 8, avec Field(alias="userName") pour que la validation lise toujours la clé d'origine. Un TypedDict garde chaque clé telle quelle et passe à la syntaxe fonctionnelle quand une clé n'est pas un nom valide. Une dataclass garde les clés qui sont des noms valides et signale les autres.
Une clé qui valait null dans l'échantillon, ou qui manque dans certains objets d'un tableau, peut contenir None, donc son annotation l'autorise. Les clés absentes reçoivent aussi None par défaut, et dans une dataclass ces champs passent à la fin, car Python refuse un champ sans valeur par défaut après un champ qui en a une.
Le typage par défaut, comme list[str] et str | None, demande Python 3.10 ou plus récent. Activez le typage Python 3.9 pour obtenir à la place Optional et List du module typing. NotRequired pour TypedDict vient de typing_extensions, et se trouve dans typing lui-même depuis Python 3.11.
Non. La conversion s'exécute dans votre navigateur sans aucune requête vers un serveur, et le JSON n'est pas conservé : les réponses d'API contenant des jetons ou des données personnelles restent sur votre appareil. Fermez l'onglet et il ne reste rien.
Les taux et les règles changent ; vérifiez la source avant de vous fier à un chiffre.
Toujours bloqué ? Poser une question sur Convertisseur JSON en classes Python et toute personne qui connaît la réponse peut répondre. Aucun compte nécessaire.