Zum Inhalt springen
100% lokal

JSON zu Python-Dataclass

Wandeln Sie ein JSON-Beispiel in typisierte Python-Klassen um — dataclass, Pydantic, TypedDict oder NamedTuple.

Eingabe
Ausgabe

JSON zu Python-Dataclass

Fügen Sie ein JSON-Objekt oder -Array ein und dieses Werkzeug leitet automatisch Typen ab und generiert Python-Klassen mit vollständigen Annotationen. Wählen Sie den Ausgabestil: @dataclass, Pydantic BaseModel für Validierung und Anfrage/Antwort-Handling, TypedDict für vorhandenen Dictionary-Code oder NamedTuple für unveränderbare Datensätze. Verschachtelte Objekte werden zu eigenen Klassen in der richtigen Reihenfolge; identische Objekte verwenden eine einzelne Klasse wieder, statt Kopien zu erstellen.

Die Optionen steuern, wie konservativ oder modern der Code ist. „Optional für Null-Felder“ konvertiert Null-Werte zu Optional-Typen statt bare None; „Standardwerte hinzufügen“ ermöglicht das Weglassen von Feldern beim Erstellen mit automatischer Umsortierung erforderlicher Felder. „Alias für ungültige Feldnamen“ bereinigt JSON-Schlüssel, die keine gültigen Python-Bezeichner sind, und bewahrt den Original-Schlüssel durch Feldmetadaten oder Pydantic Field(alias=...) zur korrekten Serialisierung. „list[T] statt List[T]“ wechselt zwischen modernen PEP 585-Generics und älterem typing.List, während __future__ Annotationen X | None / X | Y Syntax im gesamten Code ermöglichen.

Die Typableitung unterscheidet Zeichenketten, Ganzzahlen, Gleitkommazahlen und Boolesche Werte, vereint gemischte Array-Inhalte in Union-Typen und gibt Root-Arrays einen RootItem-Klassennamen mit Root = list[RootItem]-Alias. Ganze Zahlen ohne Dezimalpunkt werden als int gelesen — es gibt keine Möglichkeit, ein Dezimal-„36.0“ nach dem Parsing wiederherzustellen. Alles läuft lokal ab; Ihr JSON und der generierte Python verlassen Ihr Gerät niemals.

Häufige Fragen

Welche Ausgabestile werden unterstützt?
Vier: @dataclass (Standard-Bibliotheksstil), Pydantic BaseModel (für Validierung und JSON-Verarbeitung), TypedDict (Typannotationen über ein einfaches Dictionary ohne Runtime-Klasse) und NamedTuple (unveränderbare Datensätze ähnlich Tupeln).
Wie werden verschachtelte Objekte und Objekt-Arrays behandelt?
Jede unterschiedliche Objektform wird zu ihrer eigenen Klasse, benannt nach dem Feld, das sie enthält, und definiert vor der Klasse, die auf sie verweist. Objekte mit identischen Feldmengen und -typen verwenden eine Klasse wieder, statt zu duplizieren — ein Array von gleich geformten Datensätzen generiert eine einzige Element-Klasse.
Was passiert mit JSON-Schlüsseln, die keine gültigen Python-Bezeichner sind?
Sie werden in einen gültigen Attributnamen umgewandelt (z.B. „first-name“ → first_name). Mit aktiviertem „Alias für ungültige Feldnamen“ wird der ursprüngliche Schlüssel durch einen nativen Alias (Feldmetadaten in dataclass, Field(alias=...) in Pydantic) oder einen Kommentar am Ende für TypedDict und NamedTuple beibehalten, die keinen nativen Alias-Mechanismus haben.
Kann es int und float zuverlässig unterscheiden?
Es klassifiziert jede Zahl danach, ob sie einen Bruchteil in Ihrer Probe hat, aber JSON selbst unterscheidet int nicht von float für ganze Zahlen — ein als 36.0 gesendeter Wert ist nach dem Parsing nicht zu unterscheiden von 36, daher wird er als int gelesen.
Wird mein JSON irgendwo hochgeladen?
Nein. Analyse und Code-Generierung laufen vollständig in Ihrem Browser ab — das JSON, das Sie einfügen, und der Python-Code, den er erzeugt, verlassen niemals Ihr Gerät.