JSON-zu-Python-Konverter
Erzeuge Python-Dataclasses aus einem JSON-Beispiel direkt in deinem Browser.
Dieses Tool läuft vollständig in deinem Browser. Deine Dateien werden niemals auf einen Server hochgeladen.
from __future__ import annotations
from dataclasses import dataclass
from typing import Any, List
@dataclass
class Root:
name: str
age: int
active: bool
tags: List[str]
address: Address
@dataclass
class Address:
street: str
zip: strWas dieser Konverter macht
Liest einen JSON-Wert und erzeugt passende Python-Dataclasses: eine `@dataclass` pro im Beispiel gefundener Objektform, wobei jedes Feld anhand seines Werts mit einem Typ-Hinweis versehen wird.
So wird er verwendet
Füge ein JSON-Objekt, -Array oder einen primitiven Wert in den Editor ein. Sofort erscheint eine `Root`-Dataclass (oder ein Type-Alias, falls die Wurzel kein Objekt ist), dazu eine weitere Dataclass für jede verschachtelte Objektform.
Beispiel
Ein Objekt mit einem String-Feld `name` und einem verschachtelten Objekt `address` erzeugt `class Root: name: str; address: Address` sowie eine separate `class Address`, benannt nach dem Schlüssel, aus dem sie stammt.
Typzuordnung
Strings werden zu `str`, ganze Zahlen zu `int`, Dezimalzahlen zu `float`, Booleans zu `bool` und Arrays zu `List[ElementType]`. JSON-Schlüssel, die keine gültigen Python-Bezeichner sind (zum Beispiel mit Bindestrich), werden automatisch in einen sicheren Namen umgewandelt.
Verschachtelte Objekte und Listen
Jedes verschachtelte Objekt erhält seine eigene Dataclass, erzeugt aus seinem Schlüssel. Die Ausgabe beginnt mit `from __future__ import annotations`, sodass sich Dataclasses unabhängig von ihrer Definitionsreihenfolge gegenseitig referenzieren können.
Grenzen
Die erzeugten Dataclasses beschreiben nur das eine bereitgestellte JSON-Beispiel und enthalten keine Möglichkeit, sie aus einem Dict wiederherzustellen (keine `from_dict`/`to_dict`-Hilfsfunktionen) — bei Bedarf musst du die Serialisierung selbst ergänzen. Arrays von Objekten werden nur anhand ihres ersten Elements typisiert.
Datenschutz
Analyse und Codeerzeugung laufen vollständig lokal in deinem Browser. Das eingefügte JSON und der erzeugte Python-Code werden niemals hochgeladen.
Häufig gestellte Fragen
- Warum enthält die Ausgabe "from __future__ import annotations"?
- Dadurch können sich die erzeugten Dataclasses gegenseitig referenzieren, unabhängig von ihrer Definitionsreihenfolge, ohne in Anführungszeichen gesetzte Vorwärtsreferenzen zu benötigen.
- Werden JSON-Schlüssel mit Bindestrichen oder Leerzeichen verarbeitet?
- Ja — ein Schlüssel, der kein gültiger Python-Bezeichner ist, wird automatisch in einen sicheren umgewandelt (zum Beispiel wird first-name zu first_name), auch wenn er dem Original dann optisch nicht mehr genau entspricht.
- Enthält das JSON-(De-)Serialisierungscode?
- Nein — es werden nur die Dataclass-Formen erzeugt; ergänze bei Bedarf eigenen json.loads/dataclasses.asdict-Code oder eine Bibliothek wie dacite.