UTILS.
100 % dans le navigateur
🐍

JSON vers modèle Pydantic

Transformez un exemple JSON en classes de modèle Python Pydantic v2, avec des bascules pour une sortie @dataclass ou TypedDict et l'aliasing de champs en snake_case.

sortie

À propos de cet outil

L'outil JSON vers modèle Pydantic convertit un exemple JSON collé en classes de modèle Python. Les développeurs Python et FastAPI créent constamment des modèles Pydantic à partir d'exemples de réponses d'API, et ce convertisseur le fait instantanément dans le navigateur. Il analyse votre JSON, infère les types Python récursivement et émet une classe par objet : les chaînes deviennent str, les chaînes de date-heure ISO datetime, les chaînes de date seule date, les entiers int, les autres nombres float, les booléens bool, les tableaux List[T], et les objets imbriqués leurs propres classes de modèle nommées en PascalCase.

Toute l'analyse et la génération se déroulent localement avec JSON.parse et du JavaScript standard, si bien que rien de ce que vous collez ne quitte votre machine. Les classes enfants sont émises avant les classes qui les référencent (ordre topologique), et l'en-tête n'importe que ce qui est réellement utilisé — BaseModel et Field depuis pydantic, Optional / List / Union / Any depuis typing, et datetime / date le cas échéant. from __future__ import annotations est toujours inclus pour que les références anticipées fonctionnent quel que soit l'ordre.

Les clés absentes de certains objets frères, ou vues comme null, deviennent Optional[T] = None. La bascule de mode de sortie permute entre Pydantic v2 BaseModel (par défaut), @dataclass de la bibliothèque standard, et typing.TypedDict. Activez les champs snake_case pour renommer les clés camelCase ou invalides et ajouter automatiquement Field(alias="originalKey") afin que le modèle analyse toujours le JSON d'origine. Copiez le code ou téléchargez-le en fichier .py.

Foire aux questions

Quels types Python sont inférés ?
string vers str, date-heure ISO vers datetime, date seule vers date, entier vers int, nombre non entier vers float, booléen vers bool, tableau vers List[T] avec T fusionné à partir des éléments, et objet vers une classe BaseModel imbriquée. Les valeurs null ou manquantes deviennent Optional[T] = None.
Puis-je obtenir un dataclass ou un TypedDict à la place ?
Oui. La bascule de mode de sortie émet Pydantic v2 BaseModel (par défaut), un @dataclass de la bibliothèque standard avec l'import dataclasses, ou une classe typing.TypedDict. L'inférence de type est la même ; seuls la coquille de classe et les imports changent.
Comment les clés non-identifiants ou camelCase sont-elles gérées ?
Avec les champs snake_case activés, une clé comme userName devient user_name plus Field(alias="userName") pour qu'elle fasse toujours l'aller-retour. Les clés qui sont des mots-clés Python ou des identifiants invalides sont toujours aliasées pour que le code généré soit valide.
Les classes sont-elles ordonnées correctement ?
Oui. Les classes enfants imbriquées sont déclarées avant les classes parentes qui les utilisent, et from __future__ import annotations est inclus, de sorte que les modèles compilent sans erreurs de référence anticipée.

Plus d'outils