JSON vers Dataclass Python
Collez un exemple JSON et obtenez un @dataclass (ou BaseModel Pydantic) avec des annotations de type pour chaque champ, str, int, float, bool, Optional[...] et List[...] lorsque c’est approprié. Les objets imbriqués deviennent leurs propres dataclasses. La sortie est formatée selon PEP 8 et prête à être collée dans un fichier Python.
Comment convertir JSON en dataclass
-
1
Collez le JSON
Un seul échantillon fonctionne ; plusieurs échantillons améliorent la détection de nullabilité.
-
2
Choisissez le style
Solution de bibliothèque standard `@dataclass`, `BaseModel` Pydantic, ou `TypedDict` pour la vérification de type statique uniquement.
-
3
Choisissez la version de Python
3.9+ pour la syntaxe `list[str]`, 3.10+ pour les types d'union `|`, 3.8 pour `Optional[...]` / `List[...]`.
-
4
Copiez le code
Une classe racine plus des classes imbriquées. Collez dans un fichier `.py` et importez.
Exemple de sortie : @dataclass standard
Entrée :
{ "first_name": "Alice", "age": 30, "email": null, "tags": ["admin"] }
Sortie (Python 3.10+) :
from dataclasses import dataclass, field
from typing import Optional
@dataclass
class User:
first_name: str
age: int
tags: list[str] = field(default_factory=list)
email: Optional[str] = None
Même entrée avec Pydantic
from typing import Optional
from pydantic import BaseModel
class User(BaseModel):
first_name: str
age: int
email: Optional[str] = None
tags: list[str] = []
Mappage des types
| Valeur JSON | Type Python |
|---|---|
| chaîne | str |
| entier | int |
| nombre (décimal) | float |
| booléen | bool |
| null (vu seul) | None |
| null + autre type | Optional[T] |
| chaîne de date ISO | date (Python 3.7+) |
| date-heure ISO | datetime |
| tableau d’un type | list[T] |
| tableau mixte | list[Union[T1, T2]] |
| objet | Classe imbriquée |
Dataclass vs Pydantic vs TypedDict
| Variante | Quand utiliser |
|---|---|
@dataclass |
Solution de bibliothèque standard, pas de validation à l’exécution |
| Pydantic | Validation à l’exécution et coercition (FastAPI, paramètres) |
TypedDict |
Vérification de type statique uniquement, pas de classe d’instance |
attrs |
Projets hérités qui se sont standardisés sur attrs |
Erreurs courantes
- Oublier
default_factorypour les valeurs par défaut mutables. Un défautlist[str] = []est un piège de dataclass (partagé entre les instances). Utilisezfield(default_factory=list). - Optionnel sans défaut.
email: Optional[str]sans= Nonenécessite toujours l’argument. Faites correspondre votre sémantique JSON. - Pydantic v1 vs v2. La syntaxe et les comportements diffèrent (classe
Configvsmodel_config,validatorvsfield_validator). Le générateur par défaut est v2. - L’ordre des unions est important pour la désérialisation. Pydantic essaie les types dans l’ordre de déclaration. Mettez le plus spécifique en premier (par exemple,
intavantstr) si l’ambiguïté est possible.
Questions fréquentes
Dataclass pour des conteneurs de valeurs simples sans validation. Pydantic lorsque vous souhaitez une validation à l’exécution, une coercition ou une intégration FastAPI. TypedDict lorsque vous avez seulement besoin d’une vérification de type statique (mypy, pyright) et ne souhaitez pas d’instances de classe.
Pas pour Python 3.10+ où les unions | et la syntaxe list[str] sont natives. Utile pour les projets 3.7-3.9 pour utiliser la nouvelle syntaxe via les annotations de chaîne PEP 563. Le générateur avertit lorsqu’il est nécessaire.
Chaque objet imbriqué devient sa propre classe. La classe racine les référence par nom, vous pouvez donc réutiliser les types. Les références circulaires sont détectées et signalées.
Oui, si vous choisissez la variante Pydantic. FastAPI utilise les modèles Pydantic comme types de requête/réponse directement. Pour le transfert de données internes, @dataclass est plus léger.
Outils similaires
Référence de la table ASCII
Table ASCII complète de 0 à 127 avec décimal, hexadécimal, octal, binaire et référence numérique HTML pour chaque caractère, y compris les codes de contrôle comme NUL, LF et DEL.
Référence des caractères HTML
Liste consultable des entités HTML, de leurs codes nommés et numériques, et un copier-coller en un clic pour les caractères et symboles spéciaux.
Référence des raccourcis clavier
Recherchez les raccourcis par défaut documentés de VS Code, Chrome et Bash avec GNU Readline sous macOS, Windows et Linux.
Générateur de carte CSS
Créez le CSS d’un conteneur de carte : fond, bordure, rayon des angles, espacement intérieur et ombre douce, avec aperçu immédiat et code à copier-coller.
Formateur HTML
Mettez du HTML en forme localement dans le navigateur avec une indentation de deux ou quatre espaces. Aucun HTML n’est envoyé ni validé.
Recherche de nom de couleur
Trouvez la couleur nommée CSS standardisée la plus proche d’une valeur HEX, RGB ou HSL grâce à l’écart CIEDE2000.
Outil disponible dans d’autres langues
- Từ JSON đến lớp dữ liệu Python [VI]
- JSON a Dataclass de Python [ES]
- JSON para Dataclass em Python [PT]
- JSON till Python-dataklass [SV]
- فئة بيانات من JSON إلى بايثون [AR]
- JSONからPythonデータクラスへの変換 [JA]
- JSON ถึงคลาสข้อมูลใน Python [TH]
- JSON zu Python Dataclass [DE]
- JSON에서 Python 데이터 클래스로 변환하기 [KO]
- JSON naar Python-dataclass [NL]
- JSON ke Dataclass Python [ID]
- JSON do klasy danych w Pythonie [PL]
- 从 JSON 到 Python 数据类 [ZH]
- JSON to Python Dataclass [EN]
- JSON in Dataclass Python [IT]
- JSON в класс данных для Python [RU]
- JSON'dan Python Veri Sınıfına [TR]