JSON zu Python Dataclass
Fügen Sie ein JSON-Beispiel ein und erhalten Sie eine @dataclass (oder Pydantic BaseModel) mit Typ-Hinweisen für jedes Feld, str, int, float, bool, Optional[...] und List[...], wo es angebracht ist. Verschachtelte Objekte werden zu eigenen Dataclasses. Die Ausgabe ist PEP 8-formatiert und bereit zum Einfügen in eine Python-Datei.
So konvertieren Sie JSON in eine Dataclass
-
1
Fügen Sie das JSON ein
Ein einzelnes Beispiel funktioniert; mehrere Beispiele verbessern die Nullwert-Erkennung.
-
2
Wählen Sie den Stil
Standardbibliothek `@dataclass`, Pydantic `BaseModel` oder `TypedDict` nur für statische Typüberprüfung.
-
3
Wählen Sie die Python-Version
3.9+ für `list[str]`-Syntax, 3.10+ für `|`-Unionstypen, 3.8 für `Optional[...]` / `List[...]`.
-
4
Kopieren Sie den Code
Eine Hauptklasse plus verschachtelte. In eine `.py`-Datei einfügen und importieren.
Beispielausgabe: standardmäßige @dataclass
Eingabe:
{ "first_name": "Alice", "age": 30, "email": null, "tags": ["admin"] }
Ausgabe (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
Dieselbe Eingabe mit Pydantic
from typing import Optional
from pydantic import BaseModel
class User(BaseModel):
first_name: str
age: int
email: Optional[str] = None
tags: list[str] = []
Typzuordnung
| JSON-Wert | Python-Typ |
|---|---|
| Zeichenfolge | str |
| Ganzzahl | int |
| Zahl (dezimal) | float |
| Boolescher Wert | bool |
| null (allein gesehen) | None |
| null + anderer Typ | Optional[T] |
| ISO-Datumszeichen | date (Python 3.7+) |
| ISO-Datum und Uhrzeit | datetime |
| Array eines Typs | list[T] |
| gemischtes Array | list[Union[T1, T2]] |
| Objekt | Verschachtelte Klasse |
Dataclass vs Pydantic vs TypedDict
| Variante | Wann zu verwenden |
|---|---|
@dataclass |
Standardbibliothekslösung, keine Laufzeitvalidierung |
| Pydantic | Laufzeitvalidierung und -konvertierung (FastAPI, Einstellungen) |
TypedDict |
Nur statische Typüberprüfung, keine Instanzklasse |
attrs |
Legacy-Projekte, die auf attrs standardisiert sind |
Häufige Fehler
default_factoryfür veränderliche Standardwerte vergessen. Einlist[str] = []Standard ist eine Falle für Dataclasses (wird zwischen Instanzen geteilt). Verwenden Siefield(default_factory=list).- Optional ohne Standard.
email: Optional[str]ohne= Noneerfordert immer noch das Argument. Passen Sie Ihre JSON-Semantik an. - Pydantic v1 vs v2. Syntax und Verhalten unterscheiden sich (Klasse
Configvsmodel_config,validatorvsfield_validator). Der Generator verwendet standardmäßig v2. - Die Reihenfolge der Union ist für die Deserialisierung wichtig. Pydantic versucht Typen in der Deklarationsreihenfolge. Setzen Sie den spezifischsten zuerst (z. B.
intvorstr), wenn Mehrdeutigkeit möglich ist.
Häufig gestellte Fragen
Dataclass für einfache Wertträger ohne Validierung. Pydantic, wenn Sie Laufzeitvalidierung, -konvertierung oder FastAPI-Integration wünschen. TypedDict, wenn Sie nur statische Typüberprüfung (mypy, pyright) benötigen und keine Klasseninstanzen möchten.
Nicht für Python 3.10+, wo |-Unionen und list[str]-Syntax nativ sind. Nützlich für Projekte in 3.7-3.9, um die neuere Syntax über PEP 563-String-Anmerkungen zu verwenden. Der Generator warnt, wenn es benötigt wird.
Jedes verschachtelte Objekt wird zu seiner eigenen Klasse. Die Hauptklasse verweist sie nach Namen, sodass Sie Typen wiederverwenden können. Zirkuläre Verweise werden erkannt und markiert.
Ja, wenn Sie die Pydantic-Variante wählen. FastAPI verwendet Pydantic-Modelle direkt als Anfrage-/Antworttypen. Für interne Datenverschiebungen ist @dataclass leichter.
Verwandte Tools
ASCII-Tabelle Referenz
Vollständige ASCII-Tabelle von 0 bis 127 mit Dezimal-, Hex-, Oktal-, Binär- und numerischer HTML-Zeichenreferenz für jedes Zeichen, einschließlich Steuerzeichen wie NUL, LF und DEL.
HTML-Zeichenreferenz
Durchsuchbare Liste von HTML-Entitäten, ihren benannten und numerischen Codes sowie eine Ein-Klick-Kopie für Sonderzeichen und Symbole.
Farbrad-Explorer
Erforschen Sie das Farbrad interaktiv. Rotieren Sie Harmonien, vergleichen Sie HSL mit RYB, erkennen Sie komplementäre und triadische Paare in Echtzeit.
Referenz für Tastenkombinationen
Durchsuchen Sie dokumentierte Standardkürzel für VS Code, Chrome und Bash mit GNU Readline unter macOS, Windows und Linux.
CSS-Scrollbar-Generator
Passen Sie das Erscheinungsbild der Bildlaufleiste per CSS an. Modernes scrollbar-color / scrollbar-width und das ältere ::-webkit-scrollbar für breite Browser-Unterstützung.
Zufallsbuchstaben-Generator
Erzeugen Sie zufällige A-Z-Buchstaben. Wählen Sie Anzahl, Großschreibung, Kleinschreibung oder gemischte Schreibweise für Spiele, Aufgaben und Unterricht.
Tool in anderen Sprachen verfügbar
- JSON에서 Python 데이터 클래스로 변환하기 [KO]
- JSON vers Dataclass Python [FR]
- JSON para Dataclass em Python [PT]
- JSON naar Python-dataclass [NL]
- JSON till Python-dataklass [SV]
- Từ JSON đến lớp dữ liệu Python [VI]
- فئة بيانات من JSON إلى بايثون [AR]
- JSON ke Dataclass Python [ID]
- JSONからPythonデータクラスへの変換 [JA]
- JSON ถึงคลาสข้อมูลใน Python [TH]
- JSON a Dataclass de Python [ES]
- JSON do klasy danych w Pythonie [PL]
- JSON to Python Dataclass [EN]
- JSON in Dataclass Python [IT]
- JSON в класс данных для Python [RU]
- JSON'dan Python Veri Sınıfına [TR]
- 从 JSON 到 Python 数据类 [ZH]