logo
GeekFormat

JSON zu Python

Kostenloses Online-Tool JSON zu Python, das JSON-Daten automatisch in Python @dataclass-Klassen mit Typannotationen umwandelt. Zeichenfolgen werden zu str, Ganzzahlen zu int, Gleitkommazahlen zu float, Boolesche Werte zu bool, Arrays zu List[T], verschachtelte Objekte erzeugen unabhängige Dataclasses, null wird zu Optional[Any]. Lokale Browser-Ausführung, Kopieren in einem Klick oder Download model.py. Der generierte Code ist kompatibel mit der Standardbibliothek dataclasses von Python 3.7+ und kann direkt mit FastAPI, Django REST Framework, marshmallow, cattrs und anderen gängigen Python-Frameworks verwendet werden, oder als stark typisierte Datenstruktur in Jupyter Notebook.

Ähnliche Tools

Über JSON zu Python: JSON-Daten in ausführbare Dataclass-Modelle umwandeln

JSON zu Python ist der Prozess der Umwandlung von Daten im JSON-Format (Objekte oder Arrays) in Python-Dataclass-Typdefinitionen. Python ist eine der beliebtesten Allzweckprogrammiersprachen heute, weit verbreitet für Web-Backends (FastAPI/Django/Flask), Data Science (pandas/scikit-learn), Web-Scraping, Betriebsskripte, maschinelles Lernen, automatisierte Tests und andere Szenarien. In der Entwicklung ist es häufig erforderlich, JSON-Beispiele aus API-Dokumentationen oder tatsächlichen Antworten in Python-Typen zu konvertieren; das manuelle Schreiben von Klassen ist nicht nur repetitiv, sondern auch anfällig für Feldtypfehler. Das Ziel dieses Tools ist es, diesen Prozess zu automatisieren.

Dataclass ist eine Standardbibliotheksfunktion, die in Python 3.7 eingeführt wurde (PEP 557) und über den @dataclass-Dekorator automatisch magische Methoden wie __init__, __repr__, __eq__ generiert, wodurch die Definition von Datenklassen von einem Dutzend Zeilen Boilerplate-Code auf wenige Zeilen Felddeklarationen reduziert wird. Dieses Tool basiert auf quicktype-core, das lokal im Browser ausgeführt wird, verwendet die Renderoptionen just-types und no-comments, um reinen Python-Dataclass-Code zu generieren. Die Ausgabe enthält notwendige Importe wie from dataclasses import dataclass und from typing import Any, List, Optional und kann direkt in Python 3.7+-Projekten verwendet werden.

Typerkennung ist das Herzstück von JSON zu Python. Das Tool ordnet JSON-Grundtypen Python-Standardtypen zu: Zeichenfolgen werden zu str, Ganzzahlen zu int, Gleitkommazahlen zu float, Boolesche Werte zu bool, Arrays zu List[T] (Elemente werden aus dem ersten Element abgeleitet), verschachtelte Objekte zu unabhängigen @dataclass, null-Werte zu Optional[Any]. Bei verschachtelten Objekten erstellt das Tool automatisch für jede Ebene eine neue Dataclass, benannt nach der Großschreibung des Feldnamens, z.B. erzeugt das Feld address eine Klasse Address, Objekte im Array items erzeugen eine Klasse Item.

Im Gegensatz zu einigen Online-Tools, bei denen JSON zur Verarbeitung an einen Server gesendet werden muss, erfolgen alle Berechnungen dieses Tools im Browser. quicktype-core wird über Web Worker geladen und ausgeführt, JSON-Parsing, Typerkennung, Python-Codegenerierung und Dateidownload erfolgen alle lokal, keine Daten werden an einen Server gesendet. Dies ist besonders wichtig für JSON, das API-Schlüssel, Datenschutzfelder oder nicht veröffentlichte Geschäftsstrukturen enthält, Daten werden beim Schließen der Seite aus dem Speicher gelöscht.

Der generierte Code kann direkt in Python-Projekten platziert und verwendet werden. Dataclass ist Teil der Standardbibliothek, keine zusätzliche Installation erforderlich; das typing-Modul ist ab Python 3.5 verfügbar. Bei Verwendung von Python 3.9+ können Sie List[str] manuell durch das integrierte list[str], Optional[str] durch str | None ersetzen, um eine modernere Typannotationssyntax zu genießen. Wenn das Projekt Pydantic zur Datenvalidierung verwendet (wie FastAPI), ersetzen Sie einfach @dataclass durch class Xxx(BaseModel):, um nahtlos zu einem Pydantic-Modell zu wechseln.

Beachten Sie, dass automatisch generierter Code ein Ausgangspunkt und kein Endpunkt ist. Das Tool leitet Typen aus JSON-Beispielen ab und kann keine genauen Geschäftstypen bestimmen (z.B. werden semantische Typen wie URL, E-Mail, ID alle einheitlich als str abgeleitet). Bei JSON-Feldern in snake_case werden Python-Dataclass-Felder unverändert generiert, Sie müssen möglicherweise Feldnamen manuell in snake_case ändern oder die Zuordnung über Pydantics alias_generator konfigurieren. Es wird empfohlen, das generierte Ergebnis als ersten Entwurf zu verwenden und dann Feldnamen, Typen, Standardwerte und Validierungslogik gemäß den Projektstandards zu verfeinern.

Ein weiterer erwähnenswerter Vergleichsaspekt ist dataclass vs. Pydantic BaseModel vs. attrs vs. TypedDict. Dataclass ist die Python-Standardbibliothek, keine Abhängigkeiten, reine Datenmodellierung, keine Laufzeitvalidierung, geeignet für interne Datenübertragungsobjekte (DTO) und ORM-Modelle. Pydantic BaseModel fügt auf der Grundlage von Dataclass typgesteuerte Validierung, Serialisierung und Einstellungsverwaltung hinzu und ist die Standard-Datenmodellebene von FastAPI. attrs ist der Vorgänger von Dataclass und bietet mehr Konfigurationsoptionen (slots, validators, converters). TypedDict ist eine leichtgewichtige Lösung des typing-Moduls, bietet nur Typhinweise ohne Laufzeitbeschränkungen, geeignet für mit dict kompatible Szenarien. Dieses Tool generiert standardmäßig Dataclass, die im Editor in einem Klick durch eine der oben genannten Formen ersetzt werden kann.

Im Vergleich zu Online-Tools wie Java zu JSON / TypeScript zu JSON hat JSON zu Python einen einzigartigen Wert im Data-Science-Ökosystem. Funktionen wie pandas read_json, DataFrame.from_records, json_normalize erfordern häufig listenähnliche Objektlisten; scikit-learns Pipeline.fit akzeptiert Datenstrukturen mit Feldeinschränkungen; In Jupyter Notebook kann das Verpacken von JSON-Antworten mit Dataclass bei explorativen Analysen die Lesbarkeit des Codes erheblich verbessern. Der von diesem Tool generierte Code kann nahtlos in diese Ökosysteme integriert werden und macht das JSON-Beispiel zur einzigen Quelle der Wahrheit.

Im Python-Ökosystem gibt es weitere optionale Tools für die bidirektionale Konvertierung JSON ↔ Dataclass: marshmallow (Schwerpunkt auf Serialisierungs-/Deserialisierungsvalidierung), cattrs (strukturierte Konvertierungsbibliothek), pydantic (Laufzeitvalidierung + IDE-Unterstützung), apischema (generiert JSON-Schema ohne Dataclass-Dekorator). Die von diesem Tool generierte reine Dataclass ist eine natürliche Eingabe für diese Bibliotheken: Nach dem Kopieren der generierten Klasse fügen marshmallow-Benutzer einfach Schema(Model) hinzu, cattrs-Benutzer verwenden cattrs.structure(data, Model), um die Konvertierung abzuschließen. Es wird empfohlen, dieses Tool als Ausgangspunkt für die Typgenerierung zu verwenden und dann geeignete Ökosystembibliotheken entsprechend der Projektarchitektur hinzuzufügen.

In CLI- und Automatisierungsszenarien hat JSON zu Python ebenfalls einen einzigartigen Wert. Nach dem Parsen von Befehlszeilenargumenten durch argparse ist es häufig erforderlich, diese sekundär in dict zu verpacken und dann an Geschäftsfunktionen zu übergeben; das Ersetzen von dict durch die generierte Dataclass kann Skripte robuster machen. Ebenso können Konfigurationsdateien (config.json/settings.json), verpackt durch Dataclass, es Betriebskollegen ermöglichen, Feldbedeutungen und -typen direkt in der IDE zu sehen, und mit mypy Konfigurationsfehler in der CI-Phase frühzeitig zu erkennen.

Ein letztes oft übersehenes Detail ist das Gleichgewicht zwischen Leistung und Wartbarkeit. Die von diesem Tool generierte Dataclass ist der beste Träger für unveränderliche Snapshots: Mit (frozen=True) können Instanzen nicht geändert werden, Multi-Thread-Freigabe ist sicher; mit (slots=True) (Python 3.10+) wird die Speichernutzung um ca. 40% reduziert. Für generierte List[str]-Felder muss, um die Falle des gemeinsamen Nutzens derselben leeren Liste zu vermeiden, field(default_factory=list) anstelle von = [] verwendet werden, der von diesem Tool generierte Code befolgt diese Best Practice bereits.

Anwendungsfälle

  • REST API-Integration: Konvertieren Sie die vom Backend zurückgegebene JSON-Antwort in Python @dataclass, verwenden Sie sie mit requests + json für stark typisierte HTTP-Anfrageauswertung. Mit mypy oder pyright erhalten Sie in der IDE Echtzeit-Attributvervollständigung und Typprüfung, vermeiden häufige Tippfehler.
  • FastAPI Anfrage-/Antwortmodelle: Konvertieren Sie Beispiel-JSON aus der API-Schnittstellendokumentation in Pydantic BaseModel-Vorlagen, vereinheitlichen Sie Frontend-Backend-Modelldefinitionen. Es wird empfohlen, den response_model-Parameter in FastAPI-Projekten zu aktivieren, damit die OpenAPI-Dokumentation automatisch Feldbeispiele und Validierungsregeln generiert.
  • Django Ninja / DRF-Serialisierer: Konvertieren Sie die JSON-Antwort in Dataclass und fügen Sie dann manuell DRFs ModelSerializer oder Ninjas Schema-abgeleitete Klassen hinzu. DRFs ModelSerializer kann automatisch Validierungsregeln basierend auf Dataclass generieren, Ninjas Schema kann die Ausgabe dieses Tools ebenfalls direkt wiederverwenden.
  • Scraper-Datenmodellierung: Konvertieren Sie von Webseiten extrahierte JSON-Daten in Dataclass, vermeiden Feldfehler und Tippfehler durch dynamischen Zugriff mit dict. Bei asynchronen Scraper-Bibliotheken wie requests-html, playwright reduziert Dataclass auch den Boilerplate-Code für die JSON-Deserialisierung.
  • ML-Feature-Definition: Konvertieren Sie das JSON-Schema von scikit-learn / pandas-Trainingsdaten in Dataclass, standardisieren Sie Feature-Feldnamen und -typen. sklearn Pipeline.fit(X, y) akzeptiert Datenstrukturen mit Typannotationen, dataclass + asdict ist eine effiziente Brücke zur Konvertierung mit pandas DataFrame.
  • Konfigurationsdatei-Deserialisierung: Konvertieren Sie YAML/JSON-Konfigurationsdateibeispiele in Dataclass, verwenden Sie sie mit Hydra / OmegaConf für stark typisiertes Konfigurationslesen. Mit dem @dataclass-Dekorator von Hydra erhält die Konfiguration automatische Vervollständigung in der IDE, vermeidet häufige Tippfehler und Typinkonsistenzen in YAML-Konfigurationen.
  • Jupyter Notebook temporäre Struktur: Konvertieren Sie JSON-Beispiele aus der explorativen Datenanalyse in Dataclass, erleichtern Attributzugriff und IDE-Vervollständigung in Notebook. Das Verpacken von JSON-Antworten mit Dataclass in Notebook verbessert die Lesbarkeit des Codes für explorative Analysen erheblich und erleichtert die spätere Refaktorisierung in Produktionsmodule.
  • Microservice-Schnittstellendefinition: Konvertieren Sie Beispiel-JSON für Request-Bodys von gRPC/HTTP-Diensten in Python-Typen, vereinheitlichen Sie serverseitige Modelldefinitionen. Nach der Konvertierung von gRPC-Protobuf in JSON kann die Konvertierung in Dataclass als stark typisiertes Modell für Backend-Dienste dienen, ausgerichtet an Frontend-TypeScript-Typen.
  • CLI-Tool-Entwicklung: Konvertieren Sie JSON-Beispiele für Befehlszeilenkonfigurationen in Dataclass, verwenden Sie sie mit argparse für Konfigurationsdeserialisierung und -validierung. Die Konvertierung eines argparse-Namespace in Dataclass erfordert nur eine Zeile dataclass(**vars(args)), sicherer als manuell geschriebene Parsing-Logik.
  • Testdatenkonstruktion: Konvertieren Sie echte JSON-Fixtures, die vom Backend zurückgegeben werden, in Python-Typen, verwenden Sie dataclasses.replace in pytest für testdatengesteuerte Tests. Der parametrize-Dekorator von pytest in Kombination mit Dataclass kann typisierte Test-Fixtures konstruieren, mit klareren Fehlermeldungen.
  • Strukturierte Protokollanalyse: Konvertieren Sie von ELK / Loki erfasste JSON-Protokolle in Dataclass, erleichtern Filterung und Alarmregeln. Nach der Verpackung durch Dataclass können JSON-Protokolle von ELK präzise Feldfilterung und Aggregationsabfragen durchführen, sicherer als der Zugriff über dict.
  • Konfigurationszentrum-Migration: Konvertieren Sie JSON-Konfigurationen von Apollo / Nacos / Consul in Python-Typen für das serverseitige Hot-Reloading von Konfigurationen. JSON-Konfigurationen von Apollo / Nacos können bidirektional mit Dataclass validiert werden, fehlende Felder oder Typinkonsistenzen werden bei Konfigurationsänderungen sofort erkannt.
  • Sprachübergreifende Zusammenarbeit: Bei der Integration zwischen Python-Backend und TypeScript-Frontend konvertieren Sie dasselbe JSON jeweils in Python-Dataclass und TS-Interface, um die Konsistenz auf beiden Seiten zu gewährleisten. In sprachübergreifenden Zusammenarbeitsszenarien teilen Python-Backend und TS-Frontend dasselbe JSON-Beispiel und generieren jeweils Dataclass und Interface, um die Konsistenz der Feldnamen zu gewährleisten.
  • Datenbankmigration: Konvertieren Sie aus MongoDB / PostgreSQL JSONB-Feldern exportierte JSON-Dokumente in Python-Modelle als Referenz für ORM-Entitätsdefinitionen. Nach dem Export konvertierte MongoDB JSONB-Dokumente in Dataclass dienen als Feldreferenz für ORM-Entitäten, einfacher zu warten als das direkte Lesen von MongoDB-Dokumenten.
  • Blockchain/Web3: Konvertieren Sie On-Chain-JSON-RPC-Antworten in Python-Dataclass für die Typkapselung von SDKs wie web3.py. Ethereum-SDKs wie web3.py, eth-brownie unterstützen alle Rückgabewerte im Dataclass-Stil und erleichtern die Sekundärkapselung.
  • Data Science ETL: Konvertieren Sie vorgelagerte JSON-Datenquellen in Dataclass und verwenden Sie dann pandas DataFrame.from_records zur Konvertierung in Tabellen für nachgelagerte Analysen. pandas DataFrame.from_records([asdict(d) for d in dataclass_list]) erledigt die Konvertierung verschachtelter Strukturen in Tabellen in einer Zeile.
  • OpenAPI-Schema-Validierung: Konvertieren Sie Beispiel-JSON aus OpenAPI-Dokumenten in Python-Modelle und schreiben Sie dann Pydantic-Validierungslogik. Das example-Feld von OpenAPI kann direkt als Eingabe für dieses Tool kopiert werden, das generierte Pydantic-Modell validiert automatisch die Konsistenz der API-Dokumentation.
  • Lehrbeispiele: In Python-Kursen konvertieren Sie Beispiel-JSON in Dataclass, um das typing-Modul, Typannotationen, die automatische Generierung von __init__ und andere Konzepte zu erläutern. Beim Erklären des typing-Moduls, der automatischen Generierung von __init__, slots und anderer Konzepte in Python-Kursen ist Dataclass das anschaulichste Demonstrationsmedium.
  • Feldnamenskonvertierung: Nach der Konvertierung von snake_case-JSON-API-Antworten in Dataclass ändern Sie die Feldnamen manuell oder konfigurieren Sie die Feldzuordnung über Pydantics alias_generator. Pydantics alias_generator kann in BaseModel für die automatische Zuordnung camelCase ↔ snake_case konfiguriert werden und vermeidet manuell geschriebene Aliase.

Anleitung

  1. Fügen Sie JSON-Inhalt in den linken Editor ein oder klicken Sie auf die Schaltfläche zum Hochladen, um eine .json/.txt-Datei auszuwählen
  2. Warten Sie 400 ms auf die automatische Konvertierung, der generierte Python-Dataclass-Code wird rechts angezeigt
  3. Wenn das JSON-Format falsch ist, klicken Sie auf die Schaltfläche «JSON reparieren», um häufige Syntaxprobleme automatisch zu beheben
  4. Klicken Sie auf «Kopieren», um es in das models/-Verzeichnis des Projekts einzufügen, oder klicken Sie auf «Herunterladen», um es als model.py-Datei zu speichern

Funktionen

  • Lokale Browser-Konvertierung: JSON-Parsing und Python-Codegenerierung erfolgen vollständig im Browser, keine Daten werden an Server gesendet, auch sensible API-Antworten können sicher verwendet werden
  • Dataclass-Annotationsausgabe: Generiert mit @dataclass dekorierte Standard-Python-Klassen, die mit from __future__ import annotations direkt in Python 3.7+-Projekten verwendet werden können
  • Automatische Typerkennung: str / int / float / bool / List[T] / Dict[str, Any] / Optional[Any] werden automatisch entsprechend den JSON-Werten zugeordnet, keine manuelle Angabe der Feldtypen erforderlich
  • Automatische Aufteilung verschachtelter Objekte: Verschachtelte JSON-Objekte erzeugen unabhängige @dataclass-Klassen, benannt nach Großschreibung des Feldnamens (z.B. address -> Address), vermeidet doppelte Typdefinitionen
  • Automatische Auflösung von List-Generics: JSON-Arrays werden automatisch zu List[T] konvertiert, der Elementtyp wird aus dem ersten nicht-null-Element des Arrays abgeleitet, z.B. ["a","b"] -> List[str], [{...},{...}] -> List[Item]
  • Optionale Optional-Felder: Null-Felder erzeugen Optional[Any] als Fallback, um sicherzustellen, dass Typannotationen fehlende Felder korrekt ausdrücken
  • Automatische Konvertierung mit 400ms Entprellung: Konvertierung wird automatisch nach dem Einfügen ausgelöst, Python-Code-Vorschau in Echtzeit rechts, reduziert Wartezeit und überflüssige Klicks
  • JSON-Fehlerbehebung in einem Klick: Behebt automatisch häufige Formatfehler wie abschließende Kommas, einfache Anführungszeichen, fehlende Anführungszeichen, setzt die Codegenerierung nach erfolgreicher Reparatur fort
  • Kopieren und Herunterladen: Kopieren Sie den gesamten Python-Code in einem Klick oder laden Sie ihn als model.py-Datei herunter, die direkt im Projektstamm oder im models-Untermodul platziert werden kann
  • localStorage-Eingabeverlauf: Speichert automatisch die letzten Eingaben lokal, ermöglicht schnelle Wiederherstellung nach Aktualisierung oder versehentlichem Schließen der Seite
  • Responsive Spaltenbearbeitung: JSON links eingeben, Python-Code rechts anzeigen, unterstützt Ziehen zur Größenanpassung der Panels, angepasst an große Bildschirme und Mobilgeräte
  • Unterstützt Pydantic/attrs/TypedDict-Nachbearbeitung: Die generierte Dataclass kann in einem Klick mit BaseModel- oder attrs-Dekoratoren für FastAPI, Django Ninja, pydantic-settings und andere Frameworks angepasst werden

Codebeispiele

Python: API-Antwort mit requests zur generierten Dataclass parsen

python
# requirements.txt
# requests>=2.31

from dataclasses import dataclass
from typing import Any, List, Optional
import json
import requests


@dataclass
class Address:
    city: str
    zip: str


@dataclass
class User:
    id: int
    name: str
    active: bool
    address: Address
    tags: List[str]
    label: Optional[Any] = None


def main() -> None:
    resp = requests.get("https://api.example.com/users/1", timeout=10)
    resp.raise_for_status()

    # JSON-String direkt in Dataclass-Instanz deserialisieren
    user: User = User(**resp.json())

    # Stark typisierter Zugriff: IDE-Vervollständigung, mypy/pyright statische Prüfung
    print(f"{user.name} lives in {user.address.city}")
    print(f"tags: {user.tags}")


if __name__ == "__main__":
    main()

Python: FastAPI verwendet generiertes Modell zur Request-Body-Validierung (Pydantic angepasste Version)

python
# pip install fastapi 'pydantic>=2'

from typing import List, Optional
from fastapi import FastAPI
from pydantic import BaseModel


class Address(BaseModel):
    city: str
    zip: str


class User(BaseModel):
    id: int
    name: str
    email: str
    active: bool = True
    address: Address
    tags: List[str] = []
    label: Optional[str] = None


app = FastAPI()


@app.post("/users")
async def create_user(user: User) -> dict:
    # FastAPI validiert den Request-Body automatisch mit User, Feldtyp/Pflichtfehler geben 422 zurück
    return {"id": user.id, "name": user.name}


@app.get("/users/{user_id}", response_model=User)
async def get_user(user_id: int) -> User:
    # response_model serialisiert die Antwort automatisch, OpenAPI-Dokumentation automatisch generiert
    return User(
        id=user_id,
        name="Alice",
        email="alice@example.com",
        active=True,
        address=Address(city="Beijing", zip="100000"),
        tags=["fastapi", "pydantic"],
    )

Python: Scraper-Datenmodellierung (dataclass + JSON-Deserialisierung)

python
from dataclasses import dataclass, asdict
from typing import List, Optional
import json


@dataclass
class Author:
    id: int
    name: str


@dataclass
class Article:
    id: int
    title: str
    url: str
    author: Author
    score: int
    tags: List[str]
    summary: Optional[str] = None


def parse_articles(raw_json: str) -> List[Article]:
    """Vom Scraper erfasste JSON-Zeichenfolge in Article-Liste deserialisieren."""
    payloads = json.loads(raw_json)
    return [Article(**payload) for payload in payloads]


if __name__ == "__main__":
    raw = '''[
        {
            "id": 1,
            "title": "Hello dataclass",
            "url": "https://example.com/p/1",
            "author": {"id": 10, "name": "Alice"},
            "score": 95,
            "tags": ["python", "typing"],
            "summary": "quick intro"
        }
    ]'''

    articles = parse_articles(raw)
    for art in articles:
        # Automatische IDE-Vervollständigung für author.name, tags, summary
        print(f"[{art.score}] {art.title} - {art.author.name}")
        print(f"  tags: {art.tags}")

        # Bei Bedarf dict-Form (z.B. Schreiben in MongoDB) mit asdict
        doc = asdict(art)
        print(f"  mongo doc: {doc}")

Python: ML-Feature-Definition (pandas + sklearn-Integration)

python
# pip install pandas scikit-learn

from dataclasses import dataclass, field, asdict
from typing import List, Optional
import json
import pandas as pd
from sklearn.ensemble import RandomForestClassifier


@dataclass
class FeatureSchema:
    """Beispiel-Feature-Schema, generiert vom JSON-zu-Python-Tool und dann angepasst."""
    user_id: int
    age: int
    city: str
    plan: str
    monthly_spend: float
    active: bool
    tags: List[str] = field(default_factory=list)
    last_login: Optional[str] = None


def features_to_frame(samples: List[dict]) -> pd.DataFrame:
    """JSON-Liste in DataFrame konvertieren, automatisch Dataclass-Feldnamen als Spaltennamen verwenden."""
    rows = [asdict(FeatureSchema(**row)) for row in samples]
    df = pd.DataFrame(rows)
    # Kategorische Felder One-Hot-Kodierung
    df = pd.get_dummies(df, columns=["city", "plan"], drop_first=True)
    return df


def main() -> None:
    raw = json.loads('''[
        {"user_id": 1, "age": 25, "city": "Beijing", "plan": "pro", "monthly_spend": 99.0, "active": true, "tags": ["new"]},
        {"user_id": 2, "age": 40, "city": "Shanghai", "plan": "free", "monthly_spend": 0.0, "active": false, "tags": []}
    ]''')

    X = features_to_frame(raw)
    y = [1, 0]  # Angenommene Labels: zahlende Benutzer / kostenlose Benutzer

    model = RandomForestClassifier(n_estimators=100, random_state=42)
    model.fit(X, y)

    print("feature_columns:", list(X.columns))
    print("importances:", dict(zip(X.columns, model.feature_importances_)))

Best Practices

JSON-Beispiel sollte nach Möglichkeit vollständige Beispielwerte für alle Felder enthalten

Das Tool leitet Typen aus JSON-Beispielen ab, wenn ein Feld im Beispiel immer null ist, wird es als Optional[Any] als Fallback gesetzt. Es wird empfohlen, vor der Generierung allen Schlüsselfeldern einen Beispielwert zu geben (z.B. "description": "sample" wird als str abgeleitet, "count": 0 als int), und die Beispielwerte nach der Generierung zu löschen, um genaue Typen zu erhalten.

Komplexe JSONs vorzugsweise in mehrere Dataclasses aufteilen

Dieses Tool löst verschachtelte Objekte standardmäßig rekursiv in unabhängige Klassen auf, aber wenn die Anzahl der Felder in einer einzigen Datei 50 übersteigt, wird empfohlen, sie manuell in Untermodelle wie models/user.py, models/order.py aufzuteilen. Dies hat drei Vorteile: ① schnellere Kompilierung; ② klarere Aufgabenteilung zwischen Teammitgliedern; ③ Zirkelverweise sind einfacher zu handhaben.

Wechseln Sie zu Pydantic BaseModel, wenn Laufzeitvalidierung erforderlich ist

Wenn das Projekt FastAPI verwendet oder eine strenge Request-Body-Validierung erfordert, wird empfohlen, nach der Generierung der Dataclass sofort zu BaseModel zu wechseln: Ersetzen Sie @dataclass durch class Xxx(BaseModel):, ersetzen Sie from dataclasses import dataclass durch from pydantic import BaseModel, die anderen Feldtypen bleiben unverändert. Nach der Neuschreibung des Kerns in Rust ist Pydantic v2 sogar schneller als die Dataclass-Validierung.

Kombinieren Sie mypy für Typprüfungen in der CI-Phase

Fügen Sie den Befehl mypy src/ --strict zur CI-Pipeline hinzu, er kann Feldtippfehler, Typinkonsistenzen, missbräuchliche Verwendung von Optional und andere Probleme erkennen. Die von diesem Tool generierte Dataclass entspricht vollständig der PEP 484-Norm und besteht mypy ohne Warnungen. In Kombination mit einem pre-commit-Hook können Entwickler vor dem Commit automatisch prüfen.

Vermeiden Sie veränderliche Standardwerte in Dataclass-Feldern

tags: List[str] = [] ist ein häufiger Fehler, der dazu führt, dass alle Instanzen dieselbe leere Liste teilen. Der von diesem Tool generierte Code verwendet bereits field(default_factory=list), um dies zu handhaben, aber beim manuellen Hinzufügen neuer Felder nach der Generierung ist es wichtig, diese Regel zu befolgen. Das Python-Typsystem deckt diesen Bug erst zur Laufzeit auf, statische Prüfer erkennen ihn möglicherweise nicht.

Heruntergeladenes model.py sollte in ein unabhängiges models-Paket gelegt werden

Empfohlene Verzeichnisstruktur: src/models/__init__.py + src/models/user.py + src/models/order.py. Vorteile: ① Geschäftscode vereinfacht Imports mit from models import User; ② Team kann verschiedene Dataclasses pro Modul übernehmen; ③ pytest-Fixtures können einheitlich in conftest.py importiert werden.

Vertrauliche JSONs müssen lokal verarbeitet werden

Wenn das JSON vertrauliche Informationen wie API-Schlüssel, Tokens, nicht öffentliche Geschäftsstrukturen, nicht veröffentlichte Produktspezifikationen enthält, verwenden Sie unbedingt dieses Tool (lokale Browser-Ausführung) anstelle von Online-Tools, die ein Hochladen erfordern. Dieses Tool sendet keine Daten an einen Server, der gesamte JSON-Inhalt im Speicher wird beim Schließen der Seite gelöscht.

Python 3.10+ aktivieren Sie slots, um Speicher zu sparen

Wenn Sie viele Dataclass-Instanzen erstellen müssen (z.B. Modellierung von Millionen Daten beim Scraping), empfehle ich Python 3.10+ die Aktivierung von @dataclass(slots=True). Nach der Aktivierung verwenden Instanzen kein __dict__ mehr, die Speichernutzung wird um 30-40% reduziert, die Attributzugriffsgeschwindigkeit um ca. 20% verbessert. Der von diesem Tool generierte Code aktiviert diese Option standardmäßig nicht, Sie können slots=True nach der Generierung manuell hinzufügen.

Häufig gestellte Fragen

Wie konvertiere ich JSON in eine Python dataclass?

Fügen Sie JSON-Inhalt in den linken Editor ein oder klicken Sie auf die Schaltfläche zum Hochladen, um eine .json/.txt-Datei auszuwählen. Das Tool ruft automatisch quicktype-core innerhalb von 400ms auf, um Python-Code zu generieren, die Klassendefinition mit @dataclass-Dekorator wird rechts angezeigt. Wenn das JSON-Format falsch ist, klicken Sie auf die Schaltfläche «JSON reparieren», um es automatisch zu korrigieren und dann zu konvertieren. Wenn die Konvertierung nicht innerhalb von 400ms automatisch ausgelöst wird, klicken Sie manuell auf die Convert-Schaltfläche in der Symbolleiste.

Enthält der generierte Python-Code dataclass-Annotationen?

Ja. Das Tool verwendet den just-types-Rendermodus von quicktype-core und generiert für Python den @dataclass-Dekorator, from dataclasses import dataclass und notwendige Importe wie from typing import Any, List, Optional, die direkt mit der Standardbibliothek dataclasses von Python 3.7+ verwendet werden können. Wenn Sie keine Dataclass benötigen, können Sie den Dekorator und die Importanweisungen manuell entfernen und in eine normale Klasse umschreiben. Für präzisere Typen (wie Decimal, UUID, datetime) empfehle ich die Verwendung mit Pydantic BaseModel.

Welche JSON-Datenstrukturen werden unterstützt?

Unterstützt alle gültigen JSON-Strukturen: Grundtypen (null, boolean, number, string), Arrays (eindimensional oder mehrdimensional), verschachtelte Objekte (beliebige Tiefe). JSON-Objekte erzeugen eine Root-Dataclass, JSON-Arrays erzeugen einen Root-Container vom Typ List[RootClass]. Unterstützt keine Nicht-JSON-Werte wie JavaScript-Objektliterale, Funktionen, Symbol, undefined. quicktype-core unterstützt auch JSON Schema, JSON-Beispiele und TypeScript-Eingaben als Typquellen.

Wie werden JSON-Feldtypen Python-Typen zugeordnet?

Zeichenfolgen werden zu str, Ganzzahlen zu int, Gleitkommazahlen zu float, Boolesche Werte zu bool, Arrays zu List[T] (Elementtyp wird aus dem ersten Element abgeleitet), verschachtelte Objekte zu unabhängigen @dataclass, null zu Optional[Any]. Die detaillierten Zuordnungsregeln finden Sie in der «Schnellreferenztabelle JSON-Typen zu Python-Typen» unten auf der Seite. Python 3.9+ kann die integrierte Syntax list[str], dict[str, Any] verwenden, ohne aus dem typing-Modul zu importieren.

Welcher Typ wird für null-Werte generiert?

Null-Werte in JSON generieren Optional[Any], was bedeutet, dass das Feld fehlen oder einen unbestimmten Typ haben kann. Wenn Sie den tatsächlichen Typ des Feldes kennen, geben Sie einen Beispielwert im Quell-JSON an (z.B. "field": "" wird als str abgeleitet) und ändern Sie ihn nach der Generierung manuell in Optional[str] oder einen genaueren Typ entsprechend den Geschäftsanforderungen. Wenn im JSON viele Null-Felder vorhanden sind, ersetzen Sie diese im Quelldatensatz durch Beispielwerte (wie leere Zeichenfolge, 0, false), um ein genaueres Ableitungsergebnis zu erhalten.

Werden Arrays zu List konvertiert?

Ja. JSON-Arrays werden einheitlich in das generische Python List[T] konvertiert, der Elementtyp wird automatisch aus dem ersten Element des Arrays abgeleitet. Zum Beispiel ["a","b"] generiert List[str], [1,2,3] List[int], [{...},{...}] List[Item]. Ein leeres Array [] generiert standardmäßig List[Any]. Mehrdimensionale Arrays werden rekursiv zu List[List[T]] aufgelöst, z.B. [[1,2],[3,4]] wird zu List[List[int]].

Wie werden verschachtelte Objekte behandelt?

Jedes verschachtelte Objekt generiert eine unabhängige @dataclass-Klasse, benannt nach der Großschreibung des Feldnamens. Wenn das Root-Objekt beispielsweise ein address-Feld enthält, werden gleichzeitig zwei Dataclasses Root und Address generiert, auf die in Root über address: Address verwiesen wird. Objekte mit gleicher Struktur werden denselben Typ wiederverwenden, um doppelte Definitionen zu vermeiden. Objekte gleicher Struktur werden zu einer einzigen @dataclass-Klasse zusammengefasst, um Redundanz zu vermeiden; bei Bedarf kann nach der Generierung manuell in mehrere Klassen aufgeteilt werden.

Kann der Name der generierten Klasse angepasst werden?

quicktype-core verwendet standardmäßig den Namen der JSON-Quelle (z.B. User) als Root-Klassennamen. Sie können den Klassennamen und seine Referenzen nach der Generierung manuell ändern. Der Name der heruntergeladenen model.py-Datei kann beim Speichern ebenfalls nach Bedarf umbenannt werden. Der Root-Klassenname ist standardmäßig JsonRootClass, Sie können die Rename-Funktion der IDE nach der Generierung verwenden, um ihn in einen semantischen Geschäftsnamen (wie User, Order) umzubenennen.

Kann der generierte Code direkt in einem Projekt verwendet werden?

Er kann direkt verwendet werden, stellen Sie jedoch sicher, dass eine Python 3.7+-Umgebung vorhanden ist (dataclasses ist eine Standardbibliothek ab 3.7). Der Code hängt vom typing-Modul ab, das ab Python 3.5 verfügbar ist. Um die präziseren integrierten Generics list[str], dict[str, Any] in Python 3.9+ zu verwenden, können Sie importierte Typen wie List[str] manuell ersetzen. Bei modernen Paketverwaltungstools wie uv, poetry, pdm kann die Art der Abhängigkeitsdeklaration leicht variieren, aber dataclass selbst erfordert keine zusätzlichen Abhängigkeiten.

Kann anstelle von dataclass in Pydantic BaseModel konvertiert werden?

Das Tool generiert standardmäßig @dataclass. Wenn Sie Pydantic BaseModel für die FastAPI-Request-Body-Validierung benötigen, können Sie: ① from dataclasses import dataclass durch from pydantic import BaseModel ersetzen; ② @dataclass durch class Xxx(BaseModel): ersetzen; ③ Optional[Any] durch Optional[spezifischer Typ] ersetzen oder den Standard beibehalten. Pydantic v2 unterstützt auch die direkte Vererbung von dataclass. Pydantic v2 unterstützt gleichzeitig den dataclass-Stil: Sie können der Dataclass direkt den @dataclass-Dekorator hinzufügen und sie dann an FastAPI übergeben, ohne BaseModel zu erben.

Was sind die vollständigen Schritte zum Generieren eines FastAPI-Request-Body-Modells?

FastAPI empfiehlt die Verwendung von Pydantic BaseModel. Nach dem Generieren der Dataclass sind drei Schritte zur Anpassung erforderlich: ① @dataclass in class Xxx(BaseModel): ändern; ② den dataclasses-Import löschen und from pydantic import BaseModel hinzufügen; ③ in der FastAPI-Route den Request-Body mit user: Xxx = Body(...) empfangen, um eine automatische Validierung zu erhalten. Fortgeschrittene Verwendung: In FastAPI kann Annotated[User, Body(...)] eine weitere Steuerung des Medientyps und des Validierungsverhaltens des Request-Bodys ermöglichen.

Werden Daten an den Server gesendet? Ist die Privatsphäre sicher?

Vollständig lokale Browser-Ausführung. JSON-Parsing, Python-Codegenerierung und Dateidownload erfolgen alle im Browser über JavaScript, die eingegebenen JSON-Daten und der generierte Python-Code werden an keinen Server gesendet und auch nicht in der Cloud aufgezeichnet oder zwischengespeichert. Vertrauliche JSON mit API-Schlüsseln, Tokens, nicht öffentlichen Geschäftsfeldern können sicher verwendet werden, sie werden beim Schließen der Seite gelöscht. Nach dem Schließen oder Aktualisieren der Seite werden alle Eingaben, Ausgaben und localStorage-Verläufe aus dem Speicher gelöscht, ohne verbleibende Spuren.

Ist eine Registrierung oder Anmeldung erforderlich?

Nein. Das Tool ist vollständig kostenlos, keine Registrierung, Anmeldung oder Autorisierung erforderlich. Es kann sofort nach dem Öffnen der Seite verwendet werden, alle Funktionen sind lokal im Browser verfügbar. Das Tool ist vollständig kostenlos, werbefrei, ohne Autorisierung und fügt keine Wasserzeichen oder Tracking-Code in die generierten Ergebnisse ein.

Was tun bei JSON-Formatfehlern?

Das Tool erkennt automatisch die Gültigkeit von JSON, zeigt bei Fehlern eine rote Fehlermeldung rechts an und stellt eine Schaltfläche «JSON reparieren» bereit. Nach dem Klick werden häufige Fehler automatisch behoben: überflüssiges Komma am Ende, Ersetzen einfacher Anführungszeichen durch doppelte, Hinzufügen von Anführungszeichen zu Schlüsseln ohne Anführungszeichen, Entfernen von Kommentaren usw. Die Python-Codegenerierung wird nach erfolgreicher Reparatur fortgesetzt. Das reparierte JSON ändert nicht die ursprüngliche Semantik, nur die Formatierung wird korrigiert; wenn das Ergebnis nicht zufriedenstellend ist, können Sie es manuell rückgängig machen und neu einfügen.

Wird die Konvertierung großer JSONs langsam?

Das Tool hat keine explizite Zeilenbegrenzung, aber das Parsing und Rendern sehr großer JSONs durch den Browser kann langsamer werden. Empfehlungen: ① Teilen Sie das JSON und konvertieren Sie es stapelweise; ② konzentrieren Sie sich jeweils nur auf eine Verschachtelungsebene; ③ wenn Sie mehr als 100 Klassen stapelweise generieren müssen, empfehle ich die Verwendung des Kommandozeilentools quicktype (pip install quicktype) oder datamodel-code-generator. datamodel-code-generator (pip install datamodel-code-generator) ist ein weiteres leistungsstarkes Kommandozeilentool, das die direkte Ausgabe von Pydantic-Modellen unterstützt.

Fehlerbehebung

Meldung «Bitte JSON-Daten eingeben» oder rechte Seite leer

Die linke Eingabebox ist leer oder enthält nur Leerzeichen. Stellen Sie sicher, dass gültiger JSON-Inhalt eingefügt wurde, oder klicken Sie auf die Schaltfläche zum Hochladen, um eine .json/.txt-Datei auszuwählen, Sie können auch auf die Beispielschaltfläche klicken, um ein integriertes Beispiel zu laden.

Meldung JSON-Parsing fehlgeschlagen

Häufige Ursachen: überflüssiges Komma am Ende, Verwendung einfacher statt doppelter Anführungszeichen, Schlüssel ohne doppelte Anführungszeichen, enthält JavaScript-Kommentare. Klicken Sie auf die Schaltfläche «JSON reparieren», um einige Fehler automatisch zu beheben; falls es weiterhin fehlschlägt, überprüfen Sie zuerst mit einem JSON-Formatierungstool.

Generierte Feldtypen sind nicht genau genug

Das Tool leitet Typen aus JSON-Beispielen ab, z.B. sind alle Ganzzahlen int, alle Zeichenfolgen str. Wenn Sie genauere Typen wie Decimal, datetime, UUID, EmailStr benötigen, ändern Sie die Feldtypen nach der Generierung manuell und verwenden Sie Field-Einschränkungen im Pydantic-Modus.

Null-Feld hat Optional[Any] statt Optional[str] generiert

Da JSON-null keinen konkreten Typ ableiten kann, verwendet das Tool sicherheitshalber Optional[Any] als Fallback. Wenn Sie den tatsächlichen Typ des Feldes kennen, ersetzen Sie ihn im Quell-JSON durch einen Beispielwert (z.B. "field": "") zur Neugenerierung und ändern Sie ihn dann manuell in Optional[str].

Laufzeitmeldung Fehlendes Modul typing

typing ist eine Standardbibliothek ab Python 3.5+, dataclass eine Standardbibliothek ab Python 3.7+. Überprüfen Sie die Python-Version: python --version. Wenn die Version zu alt ist, aktualisieren Sie auf Python 3.9+, um bessere Generic-Syntax zu erhalten (list[str], dict[str, Any]).

Ich möchte Pydantic BaseModel generieren, aber nicht manuell umschreiben

Das Tool generiert standardmäßig @dataclass. Wenn das Projekt Pydantic verwenden muss, gibt es zwei Wege: ① Kopieren Sie das generierte Ergebnis und verwenden Sie Suchen & Ersetzen in der IDE, um @dataclass durch class Xxx(BaseModel): zu ersetzen, from dataclasses import dataclass durch from pydantic import BaseModel zu ersetzen; ② Verwenden Sie stattdessen das Kommandozeilentool datamodel-code-generator (pip install datamodel-code-generator), das die direkte Ausgabe von Pydantic-Modellen unterstützt.

Importfehler der heruntergeladenen .py-Datei im Projekt

Mögliche Ursachen: ① Python-Version niedriger als 3.7 (keine dataclasses); ② Projekt hat mypy-Strict-Modus, aber Felder haben keine Typdeklaration; ③ Klassenname steht in Konflikt mit anderen Modulen im Projekt. Lösung: Aktualisieren Sie Python auf 3.9+, stellen Sie sicher, dass alle Felder Typannotationen haben, benennen Sie in Konflikt stehende Klassen mit import as um.

snake_case-JSON-Felder stimmen nicht mit Python-Benennungsstil überein

Das Tool generiert Python-Felder unter Beibehaltung der ursprünglichen JSON-Feldnamen. Python empfiehlt snake_case-Benennung, die natürlich mit dem Stil von JSON-Feldern übereinstimmt; wenn Sie camelCase benötigen (z.B. bei Anbindung an JavaScript-Frontend), ändern Sie die Feldnamen manuell oder konfigurieren Sie die Alias-Zuordnung über Pydantics alias_generator.

Seite friert bei der Konvertierung sehr großer JSONs ein

Es wird empfohlen, das JSON in mehrere unabhängige Module aufzuteilen und separat zu konvertieren, oder nur den zu modellierenden Teil zu extrahieren. Das Rendern vieler Dataclasses durch den Browser verbraucht viel Speicher, für JSON über 10 MB wird die Verwendung des Kommandozeilentools quicktype (npx quicktype) oder datamodel-code-generator empfohlen.

FastAPI-Validierung der Request-Body-Felder schlägt fehl (422-Fehler)

FastAPI verwendet standardmäßig Pydantic für strenge Validierung, fehlende Felder oder Typinkonsistenzen geben 422 zurück. Lösung: ① Ändern Sie den Feldtyp in Optional[Typ] = None, um das Feld optional zu machen; ② Verwenden Sie Field(default=..., description=...), um Standardwerte und Dokumentation festzulegen; ③ Überprüfen Sie, dass der Content-Type des Request-Bodys application/json sein muss.

Glossar

dataclass
Python 3.7+ Standardbibliotheksdekorator (@dataclass), zur automatischen Generierung magischer Methoden wie __init__, __repr__, __eq__. Dieses Tool generiert @dataclass-Klassen, z.B. @dataclass class User: id: int; name: str. Im Wesentlichen entkoppelt es «Datenspeicherung» von «Datenoperationen», lässt die Klasse sich auf die Beschreibung von Datenfeldern konzentrieren, während der Dekorator automatisch Boilerplate-Methoden generiert.
Modul typing
Python-Standardbibliothek für Typannotationen, bietet generische Typen wie List, Dict, Optional, Any, Union. Die von diesem Tool generierten List[T], Optional[Any] stammen alle aus dem typing-Modul. Python 3.9+ kann die integrierten list, dict direkt verwenden. Neben collections.abc, contextlib ist es das Kernmodul in der Python-Standardbibliothek für statische Typeinschränkungen; seit PEP 484 schrittweise zum Standard für große Projekte geworden.
Optional[T]
Optionaler Typ des typing-Moduls, entspricht Union[T, None], bedeutet, dass ein Feld None sein kann. Dieses Tool ordnet JSON-null Optional[Any] zu, kann manuell in Optional[str] oder andere genauere Typen geändert werden. Beachten Sie den Unterschied zwischen Optional[T] und T = None Standardwert: Ersteres ist ein Ausdruck von None auf Typebene, Letzteres eine Standardeinstellung auf Wertebene.
List[T]
Generischer Python-Listentyp. Dieses Tool ordnet JSON-Arrays automatisch List[T] zu, z.B. wird ein Zeichenfolgenarray zu List[str], ein Objektarray zu List[Item]. Python 3.9+ kann list[T] schreiben. Das Tool importiert standardmäßig aus dem typing-Modul, äquivalent zum integrierten list[T] von Python 3.9+; wenn das Team die neue Syntax bevorzugt, kann der Import in einem Klick ersetzt werden.
Any
Spezieller Typ des typing-Moduls, bedeutet, dass jeder Typ akzeptiert wird. Dieses Tool verwendet Any als Standard-Fallback für Null-Werte und leere Arrays, um Typerkennungsfehler zu vermeiden. Häufige Verwendung von Any lässt mypy/pyright ihre Prüffähigkeit verlieren, es wird empfohlen, nach Bestimmung des Feldtyps auf genaue Typen zu ändern, z.B. Optional[str], List[int].
Pydantic BaseModel
Datenmodell-Basisklasse der Pydantic-Bibliothek, bietet Laufzeit-Datenvalidierung, Serialisierung und Deserialisierung. Die von diesem Tool generierte Dataclass kann in einem Klick in BaseModel für die FastAPI-Request-Body-Validierung umgewandelt werden. Pydantic v2 hat die Kernvalidierungslogik in Rust neu geschrieben, mit 5-50-facher Leistungssteigerung gegenüber v1; die von diesem Tool generierte Dataclass kann auch BaseModel erben, um diese Beschleunigung zu genießen.
FastAPI
Modernes Python-Web-Framework, setzt auf Pydantic für automatische Request-Body-Validierung. Die von diesem Tool generierte Dataclass kann als Anfrage-/Antwortmodellvorlage für FastAPI-Routenfunktionen dienen. Basierend auf Starlette + Pydantic, generiert automatisch OpenAPI-Dokumentation, ist eines der de-facto-Standard-Python-Backend-API-Frameworks heute.
PEP 557
Python Enhancement Proposal, der Syntax und Verhalten des Dataclass-Dekorators definiert. Der von diesem Tool generierte Code entspricht vollständig der PEP 557-Norm. Dieser Vorschlag wurde 2017 von Eric V. Smith initiiert und lehnte sich an Designkonzepte bestehender Lösungen wie attrs, Haskell record an.
Typannotation (Type Hint)
Typhinweis, der nach Funktionsparametern und Variablen in Python mit : Type annotiert wird. Alle von diesem Tool generierten Dataclass-Felder verfügen über Typannotationen, die mit mypy/pyright für statische Typprüfungen verwendet werden können. Annotationen selbst beeinflussen das Laufzeitverhalten nicht, sie dienen nur der IDE-Unterstützung, statischen mypy/pyright-Prüfungen und Laufzeitvalidierungsbibliotheken (wie Pydantic).
PEP 484
Vorschlag zur Python-Typannotationsnorm, definiert das typing-Modul und die Generics-Syntax. Die von diesem Tool generierten List[T], Optional[T] folgen PEP 484. Dieser Vorschlag wurde gemeinsam von Guido van Rossum, Jukka Lehtosalo, Łukasz Langa und anderen verfasst und ist das grundlegende Dokument für das Python-Typannotationssystem.
from __future__ import annotations
Anweisung zur verzögerten Annotaitionsauswertung, eingeführt durch PEP 563, die bewirkt, dass alle Annotationen als Zeichenfolgen gespeichert werden, um Vorwärtsreferenzprobleme zu vermeiden. Die von diesem Tool generierte Dataclass kann diese Zeile hinzufügen, um die Referenzreihenfolge der Typannotationen unabhängig zu machen. Nach der Aktivierung werden alle Annotationen verzögert als Zeichenfolgen ausgewertet, vermeiden Vorwärtsreferenzprobleme und entkoppeln die Reihenfolge der Dataclass-Felder von der Referenzreihenfolge.
model.py
Standardmäßiger Dateiname, der von diesem Tool heruntergeladen wird, entspricht den Python-Projektkonventionen. Kann in user.py, schemas.py und andere Namen passend zur Projektstruktur umbenannt werden. Entspricht dem Benennungsstil models.py von Django und Flask; in Multimodell-Projekten kann im models-Paket in Untermodule wie user.py, order.py unterteilt werden.

Schnellreferenztabelle JSON-Typen zu Python-Typen

Das Tool leitet automatisch den entsprechenden Python-Typ entsprechend dem Typ des JSON-Werts ab:

JSON-WertbeispielGenerierter Python-TypErklärung
nullOptional[Any]Nullwerttyp unbestimmt, Optional[Any] als Fallback, kann manuell in genaue Typen wie Optional[str] geändert werden
true / falseboolJSON-Boolesche Werte werden direkt dem Python-bool zugeordnet
42intJSON-Ganzzahlen werden standardmäßig Python-int zugeordnet (beliebige Genauigkeit)
3.14floatJSON-Gleitkommazahlen werden standardmäßig Python-float zugeordnet (doppelte Genauigkeit)
"hello"strJSON-Zeichenfolgen werden Python-str zugeordnet (Unicode-Zeichenfolgen)
["a","b"]List[str]Zeichenfolgenarrays werden zu List[str], Python 3.9+ kann list[str] schreiben
[1,2,3]List[int]Ganzzahlarrays werden zu List[int]
[{...},{...}]List[Item]Objektarrays generieren die entsprechende @dataclass aus dem ersten Element und umschließen sie dann mit List
[]List[Any]Bei leeren Arrays kann der Elementtyp nicht abgeleitet werden, Any als Fallback
{...} verschachteltes ObjektUnabhängige @dataclassVerschachtelte Objekte generieren eine unabhängige @dataclass-Klasse, benannt nach Großschreibung des Feldnamens

Erklärung der Struktur des generierten Python-Codes

Der von quicktype-core für Python generierte typische Code umfasst die folgenden Teile:

CodeteilBeispielFunktion
from dataclasses import dataclassfrom dataclasses import dataclassImportieren des Dataclass-Dekorators (Python 3.7+ Standardbibliothek)
from typing import Any, List, Optionalfrom typing import Any, List, OptionalImportieren von Typannotationen aus dem typing-Modul: Any beliebiger Typ, List generische Liste, Optional optionaler Typ
@dataclass@dataclass class User:Der Dekorator bewirkt, dass die Klasse automatisch Methoden wie __init__, __repr__, __eq__ generiert
Felddeklarationid: int name: strFelddefinition mit Typannotation, wird automatisch zu __init__-Parameter
List[T]-Feldtags: List[str]Repräsentiert ein JSON-Array-Feld, der Elementtyp wird aus dem ersten Element des Arrays abgeleitet
Optional[Any]-Feldlabel: Optional[Any] = NoneRepräsentiert ein Feld, das null sein kann, der Standardwert None macht die Instanziierung benutzerfreundlicher
Verschachtelte @dataclassaddress: AddressVerweist auf eine andere @dataclass-Klasse im selben Modul, bildet eine stark typisierte Struktur

Vergleich von Python-Datenmodellierungslösungen

Das Tool gibt standardmäßig @dataclass aus, aber das Python-Ökosystem bietet mehrere Datenmodellierungslösungen zur Auswahl je nach Projektanforderungen:

LösungImportmethodeLaufzeitvalidierungTypische Szenarien
@dataclassfrom dataclasses import dataclassKeine (nur Typannotationen)Interne DTOs, ORM-Modelle, reine Datencontainer; erste Wahl ohne Abhängigkeiten für Python 3.7+
Pydantic BaseModelfrom pydantic import BaseModelStark (automatische Typkonvertierung + benutzerdefinierte Validatoren)FastAPI Anfrage-/Antwortkörper, Konfigurationsdateivalidierung, prozessübergreifende Datenübertragung
attrs @attr.sfrom attrs import frozen, fieldOptionale ValidatorenHochleistungsszenarien, die slots/frozen/benutzerdefinierte Konverter erfordern
TypedDictfrom typing import TypedDictKeine (nur Typannotation, bleibt zur Laufzeit dict)Leichte Typhinweise, die vollständige Kompatibilität mit dict erfordern; wie mypy statische Prüfung
dataclasses-jsonfrom dataclasses_json import DataClassJsonMixinKann mit Pydantic kombiniert werdenDeserialisierungsszenarien mit .to_json()/.from_json()-Methoden für Dataclass
msgpack + dataclassimport msgpackKeine (Serialisierungsschicht)Hochleistungs-Binärübertragungsszenarien (msgpack ist 30-50% kleiner als JSON)

Tabelle Python-Versionen und Dataclass-Funktionen

Verschiedene Python-Versionen unterstützen Dataclass, Typing und Pydantic unterschiedlich, wählen Sie je nach Version:

Python-VersionDataclass-UnterstützungTyping-UnterstützungEmpfohlene Verwendung
3.6 und niedrigerKeine (erfordert pip install dataclasses)Grundlegendes typing verfügbarNicht empfohlen; Upgrade auf 3.9+ wird empfohlen
3.7 - 3.8@dataclass-DekoratorList[T], Optional[T] erfordern Import typingNiedrigste nutzbare Version, abwärtskompatibel mit gängigen Projekten
3.9 - 3.10@dataclass + field + asdict vollständigKann integriertes list[T], dict[str, Any] verwenden, PEP 585Empfohlen: moderne Typannotationssyntax + vollständige Dataclass
3.10+@dataclass(slots=True) spart SpeicherPEP 604: int | None ersetzt Optional[int]Am besten: slots + moderne Union-Syntax
3.11+@dataclass + slots + frozen LeistungsoptimierungenErweiterte Funktionen wie Self, TypeVarTuple, ConcatenateErste Wahl für neue Projekte; alte Projekte können schrittweise aktualisiert werden
3.12+PEP 695 Typparametersyntax (type List[T])Vollständige neue TypannotationssyntaxAusprobieren modernster Funktionen; Produktion empfohlen ab 3.11+

Privacy & Security

Alle Operationen dieses JSON-zu-Python-Tools erfolgen vollständig lokal in Ihrem Browser: JSON-Parsing, Python-Codegenerierung und Dateidownload werden alle clientseitig über Browser-JavaScript ausgeführt, kein JSON-Inhalt, keine hochgeladenen Dateien oder generierter Code werden über das Netzwerk an irgendeinen Server gesendet. Dateiuploads verwenden die native FileReader-API des Browsers, um direkt in den Speicher zu lesen, ohne zwischengeschaltete Dienste. Kein Cookie-Tracking, keine Benutzereingaben oder Nutzungsdaten werden gesammelt. Nach dem Schließen oder Aktualisieren der Seite werden alle Ein- und Ausgaben automatisch aus dem Speicher gelöscht. Geeignet für die Verarbeitung von JSON mit API-Schlüsseln, Tokens, sensiblen Geschäftsdaten.

Authoritative References