Machen Sie aus einem JSON-Beispiel Python-Dataclasses, Pydantic-Modelle oder TypedDicts mit Type Hints
Läuft in Ihrem Browser. Nichts, was Sie eingeben, wird irgendwohin gesendet. Geprüft am 16. Oktober 2026.Fügen Sie ein JSON-Beispiel ein und erhalten Sie Python-Dataclasses, Pydantic-v2-Modelle oder TypedDicts mit Type Hints. Ganze Zahlen werden zu int, und jede Dezimalzahl macht ein Feld zu float; ein Wert, der null ist oder fehlt, wird zu str | None mit None als Standardwert, und alle 3 Klassenstile nutzen dieselbe Typableitung.
Diese Seite wurde maschinell aus dem englischen Original übersetzt. Die Übersetzung wurde noch von keinem Menschen geprüft; maßgeblich ist die englische Fassung. Englisches Original lesen
Fügen Sie ein JSON-Beispiel, etwa eine API-Antwort, in das linke Feld ein.
Die Python-Klassen erscheinen während der Eingabe: eine Klasse pro Objekt, mit Type Hints wie int, float, list[str] und str | None.
Wählen Sie dataclass, Pydantic oder TypedDict und die Typisierung von Python 3.9, wenn Ihr Projekt älter als 3.10 ist.
Klicken Sie auf Kopieren oder auf Herunterladen, um models.py zu speichern.
Python liest JSON als Dictionaries ein, und erst eine Klasse mit Type Hints lässt einen Editor, einen Type Checker oder Pydantic einen falsch geschriebenen Schlüssel oder einen falschen Typ erkennen. Dieser Konverter schreibt diese Klassen aus einem Beispiel, sodass eine lange API-Antwort mit einem Einfügen zu typisiertem Python wird.
Wie die Typen gewählt werden.
| JSON-Wert | Python-Typ |
|---|---|
| "text" | str |
| true / false | bool |
| 42 (nur ganze Zahlen) | int |
| 4.5 (irgendeine Dezimalzahl gesehen) | float |
| null und zusätzlich ein Typ | str | None oder Optional[str] |
| nur null oder gemischte Arten | Any |
| [ ... ] | list[...] |
| { } leer | dict[str, Any] |
| { ... } | eine eigene Klasse |
Arrays von Objekten. Alle Objekte eines Arrays werden zu einer Klasse zusammengeführt, sodass ein Schlüssel, der nur in einigen vorkommt, trotzdem vorhanden ist, mit einem Typ, der None erlaubt, und None als Standardwert. Zwei Objekte mit genau denselben Schlüsseln und Typen teilen sich eine Klasse.
Drei Stile. Eine Dataclass braucht keine Installation; Felder mit Standardwert werden hinter die anderen gestellt, weil Python sonst einen TypeError auslöst. Pydantic-Modelle verwenden Attribute in snake_case mit Field(alias=...) für anders geschriebene Schlüssel wie userName oder first-name. Ein TypedDict behält die Schlüssel exakt bei und markiert die nur gelegentlich vorhandenen als NotRequired.
Reihenfolge und Namen. Die Klassen werden mit den Kindklassen zuerst geschrieben, sodass jeder Name vor seiner Verwendung definiert ist. Ein Schlüsselwort wie class wird zu class_, und ein Schlüssel, der einen Typ verdecken würde, wie list, erhält denselben Unterstrich.
Jeder Stil wurde geprüft, indem die Ausgabe unter CPython mit Pydantic 2 ausgeführt und das Beispiel validiert wurde. Nichts, was Sie einfügen, verlässt den Browser.
Fügen Sie ein JSON-Beispiel in den Konverter ein, und die Python-Klassen erscheinen daneben, eine pro Objekt, mit einem Type Hint an jedem Attribut. Wählen Sie dataclass für einfache Klassen, Pydantic zur Validierung oder TypedDict, um weiter mit gewöhnlichen Dictionaries zu arbeiten, und kopieren Sie das Modul in Ihr Projekt.
Eine Dataclass eignet sich für Daten, die Sie selbst erzeugen, und braucht keine Bibliothek. Pydantic eignet sich für Daten von außen, etwa API-Antworten, weil es jeden Wert prüft und verschachtelte Objekte für Sie umwandelt. Ein TypedDict fügt dem Dictionary, das json.loads zurückgibt, nur Type Hints hinzu und kostet zur Laufzeit nichts.
Pydantic-Attribute werden in snake_case geschrieben, wie PEP 8 es verlangt, mit Field(alias="userName"), damit die Validierung weiterhin den ursprünglichen Schlüssel liest. Ein TypedDict behält jeden Schlüssel exakt bei und wechselt zur funktionalen Syntax, wenn ein Schlüssel kein gültiger Name ist. Eine Dataclass behält gültige Namen bei und vermerkt den Rest.
Ein Schlüssel, der im Beispiel null war oder in manchen Objekten eines Arrays fehlt, kann None enthalten, also erlaubt sein Type Hint das. Fehlende Schlüssel erhalten außerdem None als Standardwert, und in einer Dataclass rücken diese Felder ans Ende, weil Python ein Feld ohne Standardwert nach einem mit Standardwert ablehnt.
Die Standard-Typisierung, etwa list[str] und str | None, braucht Python 3.10 oder neuer. Schalten Sie die Typisierung von Python 3.9 ein, um stattdessen Optional und List aus dem Modul typing zu erhalten. NotRequired für TypedDict kommt aus typing_extensions und steht ab Python 3.11 in typing selbst.
Nein. Die Umwandlung läuft in Ihrem Browser ohne Anfrage an einen Server, und das JSON wird nicht gespeichert, sodass API-Antworten mit Tokens oder persönlichen Daten auf Ihrem Gerät bleiben. Schließen Sie den Tab, und nichts bleibt zurück.
Sätze und Regeln ändern sich; prüfen Sie die Quelle, bevor Sie sich auf eine Zahl verlassen.
Kommen Sie nicht weiter? Fragen Sie zu JSON-zu-Python-Klassen-Konverter und jeder, der es weiß, kann antworten. Kein Konto nötig.