← Tous les outils Code Gen

Convertisseur JSON vers Python

Transformez JSON en dataclasses Python typées, TypedDict ou modèles Pydantic en un clic.

Trois paradigmes de types Python

Python propose trois approches principales pour les structures de données typées. dataclass (de la bibliothèque standard) génère une classe avec __init__, __repr__ et des indications de type — l’approche la plus portable car elle ne nécessite pas de dépendances tierces. TypedDict (module typing) décrit la forme d’un dictionnaire sans créer de nouvelle classe — préféré quand on travaille avec du code qui attend des dicts simples. Pydantic BaseModel ajoute validation à l’exécution, sérialisation et génération de schéma JSON — la référence pour les modèles API et la gestion de configuration.

Le convertisseur infère les types Python depuis JSON : les chaînes JSON deviennent str, les nombres sans décimales int, les nombres avec décimales float, les booléens bool, null devient None (et le type du champ Optional[T]), les objets imbriqués une classe imbriquée, et les tableaux list[T]. Pour les tableaux d’éléments de types mixtes, le type d’élément devient une Union.

Les objets imbriqués génèrent des définitions de classes séparées placées au-dessus de la classe qui les référence, respectant les règles de référence anticipée Python sans nécessiter le garde "TYPE_CHECKING" dans la plupart des cas.

Fonctionnalités spécifiques à Pydantic

Quand la sortie Pydantic est sélectionnée, le générateur utilise pydantic.BaseModel comme classe de base et ajoute des annotations Field() pour les valeurs par défaut et descriptions quand la structure JSON les implique. La syntaxe Pydantic v2 est utilisée par défaut (model_config = ConfigDict(...)) avec un toggle pour la compatibilité v1 (class Config).

Les noms de champs qui sont des mots réservés Python ou contiennent des caractères illégaux dans les identifiants Python (tirets, espaces, points) sont automatiquement renommés en snake_case avec un argument alias= pour que Pydantic puisse toujours analyser la clé JSON originale.

L’option model_config populate_by_name=True est émise par défaut pour que les modèles Pydantic puissent être instanciés par l’alias (correspondant au JSON) ou le nom de champ Python, ce qui est le comportement le plus flexible pour le code client API.

Flux de travail et intégration

Collez n’importe quelle réponse JSON d’API et obtenez immédiatement des classes Python typées que vous pouvez intégrer dans une route FastAPI, un sérialiseur Django REST Framework ou un script de traitement de données.

Lors de l’exploration d’un nouveau jeu de données, générer des classes typées en premier rend le code ultérieur plus sûr et plus lisible. Les IDEs comme PyCharm et VS Code fournissent l’autocomplétion et la vérification de types par rapport aux types générés.

Les pipelines de data engineering bénéficient des modèles Pydantic avec validation stricte : tout enregistrement non conforme au schéma lève une ValidationError tôt dans le pipeline plutôt qu’échouer silencieusement en aval.

FAQ

Mes données sont-elles envoyées à un serveur ?

Non. Tout le traitement s’effectue entièrement dans votre navigateur. Votre JSON ne quitte jamais votre appareil.

Quelle sortie choisir — dataclass, TypedDict ou Pydantic ?

Utilisez dataclass pour des conteneurs de données typés polyvalents sans dépendances supplémentaires. Utilisez TypedDict pour annoter des fonctions qui retournent des dicts. Utilisez Pydantic pour la validation à l’exécution, l’analyse JSON ou avec FastAPI.

Comment les mots réservés Python sont-ils gérés comme noms de champs ?

Les mots réservés comme "from", "class", "type" et "import" sont renommés avec un underscore de fin (ex. from_) et un alias est ajouté pour que la clé JSON originale soit toujours analysée correctement.

La sortie supporte-t-elle la syntaxe Python 3.9+ ?

Oui. Le générateur utilise les types génériques natifs (list[str], dict[str, int]) disponibles depuis Python 3.9 par défaut. Un mode de compatibilité Python 3.8 utilise typing.List, typing.Dict etc.

Que se passe-t-il avec les tableaux d’objets ?

Chaque tableau d’objets génère une classe nommée séparée pour le type d’élément, et le champ est typé list[NomClasse]. La même classe est réutilisée si la même structure apparaît plusieurs fois.

Outils similaires