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: str

Was 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.