Générateurs et modèles de code

JSON vers dataclasses Python

Générez des dataclasses Python 3.10+ à partir d’un échantillon JSON.

JSON d’entrée

Code généré

Créez des dataclasses Python avec unions, valeurs facultatives, structures imbriquées et noms valides.

JSON et code Python sont analysés et affichés localement, sans envoi, exécution du code ni stockage persistant dans le navigateur.

À propos de cet outil

L’outil ébauche des classes de données typées avec la bibliothèque standard Python. Il déduit les champs, sans convertir récursivement les dictionnaires JSON en instances de dataclass. Ajoutez ensuite le chargement et la validation nécessaires à votre application.

Mode d’emploi

  1. Collez du JSON ; plusieurs objets permettent d’identifier les champs absents.
  2. Définissez le nom de la classe racine.
  3. Cliquez sur « Convertir » et vérifiez types imbriqués, unions et champs obligatoires placés avant ceux avec valeur par défaut.
  4. Copiez ou téléchargez le code Python, utilisez Python 3.10+ et ajoutez la désérialisation.

Exemples

  • [{"id":1,"name":"Tom"},{"id":2}] : id est obligatoire ; name peut devenir str | None = None.
  • {"matrix":[[1,2],[3,4]],"items":[]} : produit list[list[int]] et list[Any].
  • {"class":"A","first-name":"Tom"} : les noms sont normalisés et les clés originales conservées en commentaires.

Correspondance des types

Chaînes → str, entiers → int, décimaux et mélanges numériques → float, booléens → bool, tableaux → list[T]. Des types différents forment une union ; null seul et les structures inconnues utilisent prudemment Any/None. Les champs absents reçoivent = None et suivent les champs obligatoires. Un champ obligatoire nullable reste obligatoire. Les classes imbriquées suivent l’ordre des dépendances ou emploient des références anticipées explicites ; un objet vide produit une classe vide valide. Les champs utilisent snake_case, les mots réservés un suffixe, et les conflits sont résolus. Les commentaires de renommage ne créent pas de correspondance JSON automatique. Limites : 1 MiB en entrée et en sortie, 64 niveaux, 100000 nœuds, 5000 champs fusionnés, 256 types. Entiers non sûrs, valeurs non finies et sous-dépassements vers zéro sont refusés ; les autres décimaux suivent la précision du navigateur.

Usages courants

  • Créer des modèles pour des scripts de traitement Python.
  • Organiser les exemples d’API en classes de données imbriquées.
  • Distinguer champs obligatoires, absents et explicitement nuls.

Confidentialité

JSON et code Python sont analysés et affichés localement, sans envoi, exécution du code ni stockage persistant dans le navigateur.

Pour conserver les résultats, copiez-les ou téléchargez-les avant de quitter la page.

Questions fréquentes

Qu’est-ce qu’une dataclass ?

C’est une classe de données créée à l’aide d’un décorateur de la bibliothèque standard Python. Celui-ci génère des méthodes courantes, dont l’initialisation, à partir des champs déclarés.

Quelle version de Python faut-il ?

Le code cible Python 3.10+ et utilise les annotations modernes list[T] et A | None.

Pourquoi placer les valeurs par défaut après les champs obligatoires ?

Dans une dataclass ordinaire, un champ avec valeur par défaut ne peut pas précéder un champ sans valeur par défaut, sous peine d’erreur dans les paramètres d’initialisation.

Comment les mots réservés sont-ils traités ?

Par exemple, class devient class_. La clé JSON originale reste en commentaire et les conflits de noms sont résolus.

Une dataclass retrouve-t-elle automatiquement les clés JSON originales ?

Non. Les dataclasses standard ne fournissent ni correspondance des clés JSON ni désérialisation récursive. Votre application doit convertir les champs renommés.

Retour aux catégories des outils de développement