JSON vers dataclasses et TypedDict Python

Convertissez du JSON en dataclasses ou classes TypedDict Python avec annotations de type, champs Optional et classes imbriquées définies dans l'ordre de dépendance.

Les classes sont ordonnées pour que les dépendances viennent d’abord. Les champs facultatifs valent None par défaut ; TypedDict utilise NotRequired (Python 3.11+).

S'exécute entièrement dans votre navigateur. Vos données ne sont jamais envoyées.

Outils Connexes

Voir Tout

Qu'est-ce que JSON vers Python ?

Génère des classes Python typées à partir d'un exemple JSON : soit des classes @dataclass, soit des définitions TypedDict. Les objets imbriqués deviennent leurs propres classes, émises avant celles qui les utilisent afin que le module s'importe proprement.

Comment utiliser JSON vers Python

  1. Collez un exemple JSON dans Entrée JSON (ou cliquez sur Charger un exemple / Ouvrir un fichier).
  2. Définissez le Nom du type racine (Root par défaut).
  3. Choisissez le Style de sortie : @dataclass ou TypedDict.
  4. Copiez le code Python généré ou utilisez Télécharger pour l'enregistrer dans un fichier.

Exemple

Entrée
{"id":1,"name":"A","tags":["x"]}
Sortie
from dataclasses import dataclass
from typing import List


@dataclass
class Root:
    id: int
    name: str
    tags: List[str]

Quand utiliser JSON vers Python

Utilisez-le pour ajouter des annotations de type aux charges utiles JSON dans des scripts, du code FastAPI ou des tests. Les dataclasses ne convertissent pas automatiquement les dict imbriqués : utilisez pour cela une bibliothèque comme dacite ou pydantic, ou le style TypedDict pour conserver de simples dict.

Comment fonctionne JSON vers Python

L'exemple est parcouru récursivement et chaque position collecte les types rencontrés. Les tableaux d'objets sont fusionnés en un seul type : une clé absente de certains éléments devient facultative, une clé nulle quelque part devient nullable, des entiers mêlés à des décimaux deviennent un type à virgule flottante, et tout autre mélange de types se rabat sur un type dynamique. Les objets imbriqués deviennent leurs propres types nommés (PascalCase de la clé, clés de tableau mises au singulier : orders → Order), avec des suffixes numériques en cas de collision de noms. La sortie Python utilise int, float, str, bool, List[T], Optional[T] pour les null et Any pour les valeurs dynamiques. Dans les dataclasses, les champs obligatoires viennent en premier et les facultatifs reçoivent = None ; les clés qui ne sont pas des identifiants valides (ou qui sont des mots-clés comme class) sont renommées en snake_case avec un commentaire # JSON key. La sortie TypedDict marque les clés absentes avec NotRequired et bascule vers la syntaxe fonctionnelle TypedDict("Name", {...}) quand une clé n'est pas un identifiant valide.

Cas d'utilisation courants

  • Annoter une réponse d'API JSON pour mypy ou Pyright
  • Créer des dataclasses pour un fichier de configuration
  • Décrire des charges utiles de webhook avec TypedDict
  • Générer des modèles de départ avant de passer à pydantic

Questions Fréquentes

Quelle version de Python faut-il ?

La sortie dataclass fonctionne à partir de Python 3.7. La sortie TypedDict utilise NotRequired, disponible dans le module typing depuis Python 3.11 (ou via typing_extensions pour les versions antérieures).

Pourquoi certains champs sont-ils renommés ?

Des clés comme first-name ou class ne sont pas des noms d'attributs valides : elles deviennent first_name / class_ avec un commentaire indiquant la clé JSON d'origine.

Puis-je charger du JSON directement dans la dataclass ?

Root(**data) fonctionne pour des données plates ; les objets imbriqués restent des dict, sauf si vous les convertissez vous-même ou utilisez une bibliothèque d'aide.

Étapes suivantes conseillées

Explorer d'autres catégories