Aller au contenu
Tout en local

JSON en classe de données Python

Convertissez un exemple JSON en classes Python typées — dataclass, Pydantic, TypedDict ou NamedTuple.

Entrée
Sortie

JSON en classe de données Python

Collez du JSON ou un tableau et cet outil déduit automatiquement les types et génère les classes Python avec annotations complètes. Choisissez le style : @dataclass, Pydantic BaseModel pour la validation, TypedDict pour du code basé sur dictionnaires ou NamedTuple pour les enregistrements immuables. Les objets imbriqués deviennent leurs propres classes dans le bon ordre ; les objets de forme identique réutilisent une classe au lieu de dupliquer.

Les options contrôlent si le code est conservateur ou moderne. « Optionnel pour les champs nuls » convertit null en types Optional au lieu de None ; « Ajouter des valeurs par défaut » permet d'omettre des champs lors de la création d'une instance. « Alias pour les noms de champs invalides » gère les clés JSON invalides et préserve la clé d'origine via les métadonnées de champ ou Pydantic Field(alias=...). « Utiliser list[T] au lieu de List[T] » bascule entre les génériques modernes de PEP 585 et l'ancien typing.List, tandis que les annotations futures activent la syntaxe X | None / X | Y.

L'inférence distingue les chaînes, entiers, flottants et booléens, fusionne le contenu de tableau mixte en Union et attribue aux tableaux racine un nom RootItem avec alias Root = list[RootItem]. Les nombres sans point décimal se lisent comme int — il n'y a aucun moyen de récupérer « 36.0 » après analyse. Tout s'exécute localement ; votre JSON et le code Python généré ne quittent jamais votre appareil.

FAQ

Quels styles de sortie sont pris en charge ?
Quatre : @dataclass (style de bibliothèque standard), Pydantic BaseModel (pour la validation et l'analyse JSON), TypedDict (annotations de type sur un dictionnaire simple sans classe runtime) et NamedTuple (enregistrements immuables ressemblant à des tuples).
Comment les objets imbriqués et les tableaux d'objets sont-ils gérés ?
Chaque forme d'objet distincte devient sa propre classe, nommée d'après le champ qui la contient et définie avant la classe qui la référence. Les objets avec un ensemble identique de champs et de types réutilisent une classe au lieu de dupliquer — un tableau d'enregistrements de même forme génère une seule classe d'élément.
Que se passe-t-il avec les clés JSON qui ne sont pas des identifiants Python valides ?
Elles sont nettoyées en un nom d'attribut valide (par exemple, « first-name » → first_name). Avec « Alias pour les noms de champs invalides » activé, la clé d'origine est préservée via un alias natif (métadonnées de champ dans dataclass, Field(alias=...) dans Pydantic) ou un commentaire de fin pour TypedDict et NamedTuple, qui n'ont pas de mécanisme d'alias intégré.
Peut-il distinguer int et float de manière fiable ?
Il classe chaque nombre selon qu'il a une partie fractionnaire dans votre exemple, mais JSON lui-même ne distingue pas int de float pour les nombres entiers — une valeur envoyée sous 36.0 est indiscernable de 36 une fois analysée, elle est donc lue en tant que int.
Mon JSON est-il téléchargé quelque part ?
Non. L'analyse et la génération de code s'exécutent entièrement dans votre navigateur — le JSON que vous collez et le Python qu'il produit ne quittent jamais votre appareil.