JSON en Python Dataclass en Ligne
Génère des dataclasses Python avec des type hints depuis un JSON. Gratuit, dans ton navigateur.
À quoi ça sert
JSON vers dataclass Python avec type hints
Compatible avec Python 3.7+
Le code généré utilise le module dataclasses de la bibliothèque standard. Aucune dépendance externe, fonctionne dans tout environnement Python moderne.
100 % privé
Ton JSON est traité dans le navigateur. Jamais envoyé à un serveur. Sûr pour les données d'API internes ou les modèles de données confidentiels.
Type hints corrects
Inférence de types précise : str, int, float, bool, List, Optional et dataclasses imbriquées générées avec les noms et types appropriés.
Instantané
Génération en temps réel pendant que tu tapes ou colles du JSON. Aucune attente, aucun appel serveur.
Comment ça marche
Trois étapes, sans complications
Colle ton JSON
Saisis le JSON à convertir. Ça peut être une réponse d'API, un fichier de config ou n'importe quelle structure JSON valide.
Obtiens ta dataclass Python
L'outil génère une classe Python décorée avec @dataclass, avec des type hints inférés (str, int, float, bool, list, dataclass imbriquée) pour chaque champ.
Copie et importe dans ton projet
Copie le code généré dans ton module Python. Tu as juste besoin d'importer dataclass depuis le module dataclasses de la bibliothèque standard.
FAQ
Des questions ?
Les dataclasses sont des classes Python conçues principalement pour stocker des données, introduites en Python 3.7 via le PEP 557. Le décorateur @dataclass génère automatiquement des méthodes comme __init__, __repr__ et __eq__ à partir des champs déclarés avec des type hints. Elles constituent la solution moderne pour éviter les classes manuelles avec des __init__ répétitifs, offrant un code plus lisible sans les dépendances externes de Pydantic.
Un dict Python n'a pas de types définis, accepte n'importe quelle clé et valeur, et n'offre pas d'autocomplétion dans les IDE. Une dataclass définit explicitement la structure avec des type hints, permet l'accès aux champs par notation pointée (`obj.field` plutôt que `obj['field']`), génère automatiquement des méthodes de comparaison et de représentation, et permet aux IDE et aux outils d'analyse statique (mypy, Pyright) de détecter les erreurs de type avant l'exécution.
L'outil analyse les valeurs JSON pour inférer le type Python le plus adapté : les chaînes de texte deviennent `str`, les entiers `int`, les décimaux `float`, les booléens `bool`, les tableaux `List[T]` où T est le type inféré des éléments, et les objets imbriqués de nouvelles dataclasses. Les valeurs null deviennent `Optional[T]` avec une valeur par défaut de `None`.
Oui. Quand le JSON contient des objets dans des objets, l'outil génère une dataclass distincte pour chaque niveau d'imbrication. Les classes sont correctement ordonnées dans le code pour que chaque dataclass soit définie avant d'être référencée. Par exemple, `{"user": {"name": "Alice", "age": 30}}` génère à la fois une dataclass `User` et la dataclass parente qui la contient.
Les champs avec des valeurs null dans le JSON d'exemple sont générés comme `Optional[T] = None` dans la dataclass. Cela indique que le champ peut être absent ou None à l'exécution. Pour utiliser Optional, tu dois l'importer depuis `typing` (Python < 3.10) ou utiliser la syntaxe `T | None` (Python 3.10+). L'outil génère du code compatible avec Python 3.7+.
Évolution des type hints Python : du PEP 484 aux dataclasses, comparaison avec Pydantic
Les type hints en Python ont été introduits par le PEP 484 dans Python 3.5 (2015). Avant cela, Python était typé dynamiquement et les outils d'analyse statique ne pouvaient pas vérifier les types. Le PEP 526 (Python 3.6) a ajouté les annotations de variables, et le PEP 557 (Python 3.7) a introduit les dataclasses, qui utilisent les type hints comme déclaration de champs. Cette évolution a transformé Python en un langage capable de tirer parti à la fois du typage dynamique et de la vérification statique.
Le module dataclasses de la bibliothèque standard génère automatiquement __init__, __repr__ et __eq__. Pour des besoins plus avancés comme la validation de données, la sérialisation automatique et la compatibilité avec les schémas JSON, Pydantic (v1 et v2) est l'alternative la plus populaire. FastAPI utilise Pydantic pour valider automatiquement les corps des requêtes HTTP. Cependant, pour la plupart des cas de modélisation interne, les dataclasses standard sont suffisantes et ne nécessitent aucune dépendance externe.
La transition de Python 2 à Python 3 et l'adoption des type hints ont transformé l'écosystème. Des outils comme mypy (Dropbox), Pyright (Microsoft) et Pylance (VS Code) effectuent des analyses de types statiques. Dans les grands projets, les type hints réduisent considérablement les bugs de type en production. Générer des dataclasses depuis des JSON d'API externes ou des schémas de bases de données est une pratique courante pour maintenir un code Python lisible et vérifiable.