Skip to content

JSON zu Python Klassen-Konverter

JSON einfügen, sofort Python-Klassen erhalten — dataclass, Pydantic v2 oder TypedDict. Korrekte Optional-Typen und camelCase-Aliase. 100 % im Browser, kostenlos.

Kein Tracking Läuft im Browser Kostenlos
Ausgabe
0 Zeichen
Python-Ausgabe
0 Zeilen
Ausgabe anhand der Python-3.12+-Syntax und der Pydantic-v2-Semantik für reale API-Nutzlasten verifiziert. — Go Tools Team · Jul 3, 2026

Was ist die JSON-zu-Python-Konvertierung?

Die JSON-zu-Python-Konvertierung verwandelt ein JSON-Beispiel in einsatzbereite Python-Klassen — ein dataclass aus der Standardbibliothek, ein Pydantic-v2-Modell oder ein TypedDict — sodass Sie nie wieder Felddefinitionen für eine API-Antwort oder Konfigurationsdatei von Hand schreiben. Dieser Python-Klassen-Generator leitet korrekte Typen ab (int, float, str, bool, Optional), verwandelt verschachtelte Objekte in benannte Klassen und ergänzt Pydantic-Aliase für camelCase-Schlüssel — alles zu 100 % in Ihrem Browser.

Beispiele

API-Antwort → dataclass

{"id":101,"name":"Ada Lovelace","email":"ada@example.com","active":true,"roles":["admin","user"]}
from dataclasses import dataclass
from typing import List


@dataclass
class Root:
    id: int
    name: str
    email: str
    active: bool
    roles: List[str]

Eine typische REST-Nutzlast wird zu einem einsatzbereiten @dataclass. Ganzzahlen ergeben int, Dezimalzahlen ergeben float, und Arrays werden zu List[str].

Verschachteltes Objekt (Kindklasse zuerst)

{"repo":"pydantic","owner":{"login":"samuelcolvin","id":100}}
from dataclasses import dataclass


@dataclass
class Owner:
    login: str
    id: int


@dataclass
class Root:
    repo: str
    owner: Owner

Verschachtelte Objekte werden zu separaten, benannten Klassen. Die Kindklasse (Owner) wird vor der Elternklasse ausgegeben, sodass der Code ohne from __future__ import annotations läuft.

camelCase → Pydantic-v2-Alias

{"login":"octocat","publicRepos":15,"createdAt":"2011-01-25"}
from pydantic import BaseModel, ConfigDict, Field


class Root(BaseModel):
    model_config = ConfigDict(populate_by_name=True)

    login: str
    public_repos: int = Field(alias="publicRepos")
    created_at: str = Field(alias="createdAt")

Im Pydantic-Modus sind die Felder snake_case, wobei Field(alias=...) auf den ursprünglichen JSON-Schlüssel zurückverweist, und populate_by_name lässt Sie das Modell auf beide Arten erstellen — so validiert es echte API-Daten im Roundtrip.

Array von Objekten → TypedDict (optionaler Schlüssel)

{"users":[{"id":1,"nick":"x"},{"id":2}]}
from typing import List, Optional, TypedDict


class User(TypedDict):
    id: int
    nick: Optional[str]


class Root(TypedDict):
    users: List[User]

Arrays von Objekten werden zu einem Element-Typ zusammengeführt. Ein Schlüssel, der in manchen Elementen fehlt (nick), wird zu Optional. TypedDict beschreibt die Form eines schlichten dict ohne Laufzeit-Overhead.

So konvertieren Sie JSON nach Python

  1. 1

    JSON einfügen

    Fügen Sie ein JSON-Objekt, ein Array oder eine API-Antwort in das Eingabefeld ein. Die Konvertierung startet sofort.

  2. 2

    dataclass, Pydantic oder TypedDict wählen

    Schalten Sie den Ausgabestil passend zu Ihrem Projekt um und benennen Sie die Root-Klasse vom Standard Root um.

  3. 3

    Kopieren oder herunterladen

    Übernehmen Sie den erzeugten Python-Code mit einem Klick und fügen Sie ihn direkt in Ihren Code ein.

Common Use Cases

Typisierte API-Clients
Verwandeln Sie eine Beispiel-Antwort von REST oder GraphQL in Pydantic-Modelle oder dataclasses für einen requests- oder httpx-Client, ohne Felddefinitionen von Hand zu schreiben.
Konfigurations- und Fixture-Parsing
Erzeugen Sie Modelle für JSON-Konfigurationsdateien, Test-Fixtures oder Webhook-Nutzlasten, die Sie laden und validieren müssen.
Schnelles Prototyping und Typhinweise
Fügen Sie eine unbekannte Nutzlast ein, um ihre Struktur sofort als Python-Typen zu sehen — eine schnelle Möglichkeit, eine neue API zu erkunden oder Legacy-dict-Code TypedDict-Hinweise hinzuzufügen.

Wie die Konvertierung funktioniert

Strukturelle Inferenz
Jedes Objekt wird zu einer benannten Klasse; identische Formen werden dedupliziert, sodass Sie eine Klasse erhalten und keine Kopien. Arrays von Objekten werden Schlüssel für Schlüssel zusammengeführt, und Schlüssel, die in manchen Elementen fehlen, werden zu Optional.
Drei idiomatische Ziele
dataclass kommt ohne Abhängigkeiten aus und behält gültige Schlüssel für Root(**data); Pydantic v2 ergänzt Field-Aliase plus populate_by_name für echte Validierung; TypedDict beschreibt ein schlichtes dict für statische Typprüfer und nutzt die funktionale Syntax, wenn ein Schlüssel kein Bezeichner ist.
Korrekte, abhängigkeitsarme Typisierung
Ganzzahlen werden zu int (beliebig genau, kein Überlauf), Dezimalzahlen und Exponenten zu float und reine null-Felder zu Optional[Any]. typing-Importe (Optional, List, Any) werden nur dann hinzugefügt, wenn sie tatsächlich verwendet werden.
100 % clientseitig
Parsing und Generierung laufen in Ihrem Browser ohne Netzwerkaufrufe, sodass Ihre Daten privat bleiben.

Tipps für saubere Python-Modelle

Modus zur Aufgabe passend wählen
Verwenden Sie dataclass für interne Datencontainer, Pydantic v2, wenn Sie nicht vertrauenswürdige Eingaben validieren oder parsen, und TypedDict, wenn Sie nur statische Typhinweise über bestehende dicts benötigen.
Repräsentatives Beispiel einfügen
Felder werden nur dann als Optional markiert, wenn ein Beispiel sie auslässt, und reine null-Werte fallen auf Any zurück. Ein ausgefülltes, vollständiges Beispiel liefert die genauesten Typen.
Root-Klasse benennen
Vergeben Sie einen aussagekräftigen Root-Namen (User, ApiResponse) statt des Standards Root für lesbaren, importierbaren Code.

Häufig gestellte Fragen

Wie konvertiere ich JSON in eine Python-Klasse?
Fügen Sie Ihr JSON in das Eingabefeld ein. Der Konverter liest es sofort in Ihrem Browser und erzeugt rechts Python-Code. Wählen Sie mit dem Umschalter dataclass, Pydantic v2 oder TypedDict und klicken Sie dann auf Kopieren — kein Upload, kein Konto, kein Warten.
Was ist der Unterschied zwischen dataclass-, Pydantic- und TypedDict-Ausgabe?
dataclass liefert ein @dataclass aus der Standardbibliothek ohne Abhängigkeiten — ideal für schlichte Datencontainer. Pydantic v2 gibt BaseModel-Klassen aus, die Daten zur Laufzeit validieren und konvertieren, ideal zum Parsen nicht vertrauenswürdiger API-Antworten. TypedDict beschreibt die Form eines schlichten dict für statische Typprüfer (mypy, Pyright) ohne Laufzeitkosten. Wechseln Sie die Modi, um dasselbe JSON in jedem zu vergleichen.
Wie erzeuge ich ein Pydantic-Modell aus JSON?
Wählen Sie den Reiter Pydantic v2. Die Felder werden in snake_case umgewandelt mit Field(alias="originalKey"), sodass das Modell weiterhin camelCase-JSON liest, und model_config = ConfigDict(populate_by_name=True) lässt Sie es auch per Feldnamen konstruieren. Parsen Sie eine Nutzlast mit Root.model_validate(data) — Pydantic validiert die Typen und wirft bei fehlerhafter Eingabe einen klaren Fehler.
Wie behandelt die dataclass-Ausgabe camelCase-Schlüssel?
Ein dataclass hat keinen eingebauten Alias, daher behält der dataclass-Modus den ursprünglichen Schlüssel als Feldnamen bei, wenn dieser ein gültiger Python-Bezeichner ist (publicRepos bleibt publicRepos), damit Root(**data) funktioniert. Wenn Sie idiomatisches snake_case mit Aliassen möchten, verwenden Sie stattdessen den Pydantic-v2-Modus, der snake_case-Felder auf den exakten JSON-Schlüssel zurückführt.
Wie werden optionale und null-Felder typisiert?
Wenn ein Schlüssel in manchen Array-Elementen vorkommt, in anderen aber nicht, wird sein Typ in Optional gehüllt. Ein Feld, das ausschließlich null ist, wird zu Optional[Any], weil ein reines JSON-null keinen Typ trägt. Fügen Sie ein repräsentatives Beispiel mit einem ausgefüllten Wert ein, um einen genaueren Typ als Any zu erhalten.
Auf welchen Python-Typ wird jeder JSON-Wert abgebildet?
Strings werden zu str, Booleans zu bool, Ganzzahlen zu int und jede Zahl mit Dezimalpunkt oder Exponent zu float. Weil Python-Integer beliebig genau sind, bleiben selbst riesige IDs int — es gibt keinen 64-Bit-Überlauf. Leere oder gemischt typisierte Arrays werden zu List[Any], und Objekte werden zu verschachtelten Klassen.
Verarbeitet es verschachtelte Objekte und Arrays von Objekten?
Ja. Jedes verschachtelte Objekt wird zu einer eigenen benannten Klasse, und identische Formen werden zu einer einzigen Klasse dedupliziert, die von jedem Feld wiederverwendet wird. Arrays von Objekten werden Schlüssel für Schlüssel zusammengeführt, sodass Sie eine Element-Klasse erhalten; Schlüssel, die in manchen Elementen fehlen, werden als Optional markiert. Kindklassen werden stets vor den Klassen ausgegeben, die sie verwenden.
Wie werden Python-Schlüsselwörter und Nicht-Bezeichner-Schlüssel behandelt?
Ein JSON-Schlüssel, der ein Python-Schlüsselwort ist (class, from, import), erhält einen angehängten Unterstrich (class_). Schlüssel mit Bindestrichen, Leerzeichen oder führender Ziffer werden im dataclass- und Pydantic-Modus zu gültigen Bezeichnern bereinigt. Im TypedDict-Modus wird jedes dict, das einen Nicht-Bezeichner-Schlüssel enthält, mit der funktionalen Syntax TypedDict('Name', {...}) ausgegeben, sodass der exakte Schlüssel wie "first-name" erhalten bleibt.
Wie verwende ich die erzeugte dataclass, um JSON zu parsen?
Für ein flaches Objekt funktioniert json.loads und dann Root(**data) direkt. Bei verschachtelten Strukturen rekursiert dataclass nicht automatisch — erstellen Sie entweder die Kindobjekte selbst, verwenden Sie eine Bibliothek wie dacite oder pydantic.dataclasses, oder schalten Sie dieses Werkzeug in den Pydantic-v2-Modus, in dem Root.model_validate(json.loads(text)) den gesamten Baum in einem Aufruf parst.
Sind meine JSON-Daten privat und sicher?
Ja. Die Konvertierung läuft zu 100 % in Ihrem Browser mit JavaScript. Ihr JSON — einschließlich Tokens, IDs oder Kundendaten — verlässt die Seite niemals und wird nie an einen Server gesendet.
Ist das Werkzeug kostenlos? Brauche ich ein Konto?
Es ist völlig kostenlos, ohne Anmeldung, ohne Limits und ohne Werbung, die den Arbeitsbereich überlädt. Es funktioniert offline, sobald die Seite geladen ist.

Verwandte Werkzeuge

Alle Werkzeuge anzeigen →