Typgenerierung

JSON zu PythonDataclasses und Pydantic-Modelle

Ein fehlender Schlüssel und ein vorhandenes null führen zu unterschiedlichen Feldvorgaben.

JSON zu Python

JSON-Eingabe

Analyse und Generierung erfolgen in diesem Browser. Eingaben werden weder hochgeladen noch gespeichert.

Erzeugter Quelltext

Generierungsoptionen

Python ab 3.9. Dataclass-Metadaten decodieren und prüfen nicht. Pydantic 2.12.5 liefert load_models(source) für die gewählte Zahlenpolitik.

Arraybeispiele definieren das Elementmodell Root. Pydantic load_models akzeptiert ein Objekt oder ein Array.

2 Klassen · 2 nullfähige Felder

JSON zu Python erstellt einen Modellentwurf aus konkreten API-Antworten. Nehmen Sie auch Datensätze auf, in denen optionale Eigenschaften fehlen. Ein einzelnes vollständig ausgefülltes Objekt zeigt diese Unterschiede nicht.

Python Dataclasses eignen sich als typisierte Datenbehälter ohne zusätzliche Abhängigkeit. Pydantic Modelle bieten dagegen Prüfung und Verarbeitung beim Einlesen. Die Beispiele beschreiben beobachtete Daten; verbindliche Geschäftsregeln müssen Sie ergänzen.

Was JSON zu Python sichtbar macht

Fehlend ist nicht gleich null

JSON zu Python lässt ein stets vorhandenes, aber nullfähiges Feld verpflichtend. Fehlt sein Schlüssel in einem weiteren Datensatz, erhält es hingegen den Standardwert None. Damit bleiben erlaubte Werte und erforderliche Konstruktorargumente getrennte Entscheidungen.

Zwei Objektkarten verbinden eine hohle null-Markierung und eine fehlende Stelle mit unterschiedlichen Feldvorgaben.

Originalschlüssel nachvollziehbar zuordnen

Aus reservierten Wörtern oder Schlüsseln mit Satzzeichen entstehen gültige Python-Attribute. Die ursprüngliche Schreibweise bleibt in dataclass-Metadaten oder einem Pydantic-Alias erhalten. Kollidierende Namen werden durch feste Suffixe unterschieden.

Unregelmäßige Schlüssel werden über getrennte Metadaten- und Aliasverbindungen gültigen Attributen zugeordnet.

Vor dem Import drei Entscheidungen treffen

01

Unterschiedliche Datensätze vergleichen

Verwenden Sie ein Objekt oder ein nicht leeres Array ausschließlich aus Objekten. An jeder Arrayposition fließen alle Elemente in die Typableitung ein. Zusätzliche und fehlende Schlüssel späterer Elemente gehen dadurch nicht verloren.

02

Standardwerte bewusst festlegen

Standardmäßig werden nur beobachtete fehlende Schlüssel optional. Die andere Einstellung erlaubt das Weglassen sämtlicher Felder. Datumsangaben bleiben zunächst str. Für genaue Dezimalzahlen wählen Sie Decimal, bevor Sie die erzeugte Datei in Ihr Projekt übernehmen.

03

Nur aktuelle Ergebnisse übernehmen

Nach Änderungen wartet die Generierung 350 ms. Ohne Automatik stehen die Schaltfläche und Ctrl/Cmd+Enter bereit. Veraltete Ergebnisse lassen sich nicht exportieren. Leeren und Beispiel laden speichern einen Rückgängig-Schritt mit Eingabe, Optionen und Ausgabe.

Typableitung und Verhalten der Modelle

Zwei Frameworks in derselben Datei

Dataclasses verwenden die Standardbibliothek; Felder ohne Vorgabe stehen vor Feldern mit Standardwert. Pydantic wird gezielt in Version 2.12.5 unterstützt. Untergeordnete Klassen stehen vor ihren Eltern. Der erzeugte Quelltext ist für Python ab 3.9 ausgelegt.

Zahlen mit ausdrücklicher Präzisionswahl

Reine Ganzzahlgruppen erhalten int mit beliebiger Genauigkeit. Sobald Dezimal- oder Exponentenschreibweise vorkommt, verwendet die Gruppe standardmäßig float. Auch darin zusammengeführte große Ganzzahlen können runden. Der Decimal-Lader liest Dezimaltokens ohne float-Zwischenschritt, selbst innerhalb von Any-Strukturen.

Datumswerte ohne voreilige Annahmen

Die ISO-Option erkennt gültige Kalenderdaten sowie vollständige Zeitstempel mit Zeitzone und höchstens sechs Nachkommastellen der Sekunden. Alle Zeichenfolgen derselben Position müssen dieselbe Datumsart zeigen; null wird ausgenommen. Ungültige Daten und Zeitstempel ohne Zeitzone bleiben str. Nur Pydantic übernimmt die Laufzeitumwandlung.

Gültige Attribute mit eindeutigen Namen

Attribute werden zu ASCII-snake_case. Reservierte Wörter, führende Unterstriche, model_*-Namen und BaseModel-Methoden werden umbenannt. Leere Schlüssel, Unicode und Steuerzeichen bleiben über Aliase erhalten. Interne Import-Aliase schützen auch Klassen namens Decimal oder BaseModel vor Namenskollisionen.

Vertrag und Grenzen der Ausgabedatei

Dataclasses lesen nicht selbstständig ein
Typhinweise und json_key-Metadaten prüfen keine Werte, ersetzen keine Schlüssel und erzeugen keine verschachtelten Instanzen. Sie parsen auch keine Datumsangaben. Ein übergebenes dict bleibt ein dict. asdict verwendet die Python-Attributnamen, ohne die gespeicherten JSON-Aliase anzuwenden.
Pydantic über den erzeugten Helfer laden
Installieren Sie pydantic==2.12.5 und rufen Sie load_models(source) auf. Der Helfer führt json.loads mit der gewählten Zahlenpolitik vor model_validate aus und liefert ein Modell oder eine Liste. Ein direkter Aufruf von model_validate_json bietet nicht dieselbe Decimal-Garantie. Decimal wird üblicherweise als JSON-Zeichenfolge serialisiert.
Optional bedeutet zunächst nullfähig
Erst ein Standardwert erlaubt das Weglassen eines Felds. Pydantic akzeptiert nur die ursprünglichen JSON-Aliase und lehnt unbekannte Eigenschaften mit extra="forbid" ab. Fehlend und ausdrücklich null können beide als None enden; model_fields_set unterscheidet die Anwesenheit. Es gelten normale Pydantic-Typumwandlungen, keine abgeleiteten strengen Geschäftsregeln.
Unbestimmte Eingaben bleiben breit typisiert
Widersprüchliche Wertarten und ausschließlich null ergeben Any. Leere Arrays ergeben List[Any], leere untergeordnete Objekte Dict[str, Any]. Keine Generierung von Enums, UUID, EmailStr, TypedDict, JSON Schema, OpenAPI oder ORM. Skalare Wurzeln sowie leere oder gemischte Wurzelarrays werden abgewiesen.
Namen und Zahlen können Fehler auslösen
Ohne Aliase scheitert jeder Schlüssel, der umbenannt werden müsste. Ungepaarte Unicode-Surrogate in Schlüsseln sind ebenfalls ausgeschlossen. float-Überlauf und Unterlauf eines Nichtnullwerts auf null werden zurückgewiesen. Übliche binäre Rundung bleibt möglich; für exakte Dezimalwerte ist Decimal vorgesehen.
Striktes JSON mit festen Obergrenzen
Keine Kommentare, abschließenden Kommas, doppelten Schlüssel, automatische Reparatur, Dateiimporte, URL-Abfragen oder Python-Ausführung. Grenzen: 500.000 Eingabezeichen, 50.000 Knoten, Tiefe 40, 100 Felder je zusammengeführtem Objekt, 200 Klassen, je 1.000 Zeichen pro Schlüssel/Zahlentoken, Exponentenbetrag 10.000 und 1.000.000 Ausgabezeichen.

Fragen zu JSON zu Python

Wann eignet sich eine dataclass und wann Pydantic?

Dataclasses passen, wenn Ihre Anwendung Einlesen und Konvertieren bereits selbst erledigt. JSON zu Python bietet Pydantic für die Konstruktion verschachtelter Objekte und die Prüfung beim Laden. Prüfen Sie dabei auch dessen Regeln zu Typumwandlung und unbekannten Feldern.

Welche Python-Version braucht der erzeugte Code?

Die Ausgabe setzt Python 3.9 oder neuer voraus. Optional kommt aus typing; Dataclass-Felder mit Standardwert stehen hinter verpflichtenden Feldern. Für Pydantic gilt das feste Testziel 2.12.5. Das bedeutet nicht, dass diese Version die neueste Veröffentlichung ist.

Wie werden verschachtelte Objekte typisiert?

Nicht leere untergeordnete Objekte erhalten eigene Klassen in derselben Datei. Kinder stehen vor Eltern. Objektarrays vereinigen die Schlüssel aller Elemente. Bei einem Wurzelarray beschreibt die Hauptklasse ein Element; der Pydantic-Lader liefert entsprechend eine Liste.

Lässt sich JSON ohne zusätzliche Bibliothek in eine dataclass einlesen?

Ja, mit eigenem Einlesecode. Die erzeugten Dataclasses enthalten keinen Decoder. json.loads liefert dict und list. Sie müssen die ursprünglichen Schlüssel selbst zuordnen und untergeordnete Dataclasses ausdrücklich konstruieren; Metadaten erledigen das nicht.

Wie passen camelCase-Schlüssel zu Python-Attributen in snake_case?

Aktivieren Sie Aliase. Pydantic liest den JSON-Schlüssel mit Field(alias=...), während Dataclasses ihn als json_key-Metadaten für Ihren Adapter speichern. Suffixe unterscheiden kollidierende Namen wie a-b und a_b. Es gibt keinen Rückfall auf den Python-Namen eines anderen Felds.

Fehlt ein wichtiger Fall bei der Typableitung?

Den Modellentwurf an echten Daten prüfen

Nutzen Sie JSON zu Python mit fehlenden Schlüsseln, null und typischen Zahlen. Prüfen Sie anschließend die exportierte Datei mit dem tatsächlichen Einlesecode Ihrer Anwendung.