Was dieses Werkzeug tut
Aus einer JSON-Probe werden Python-Klassen, eine je Objekt.
{ "id": 1, "firstName": "Ada", "address": { "city": "Paris" } }
from pydantic import BaseModel, Field
class Address(BaseModel):
city: str
class Root(BaseModel):
id: int
first_name: str = Field(alias="firstName")
address: Address
Die Kinder werden zuerst deklariert: eine Klasse muss da sein, bevor eine andere ein Feld mit ihr annotiert. Die Ausgabe zielt auf modernes Python — list[str] und int | str stehen direkt da, was 3.10 oder neuer verlangt.
Drei Stile, drei verschiedene Preise
| Stil | was er Ihnen gibt | was er kostet |
|---|---|---|
| Pydantic | Prüfung an der Grenze, Aliasse für umbenannte Schlüssel | eine Abhängigkeit und Objekte, die nicht schlicht sind |
| dataclass | ein einfacher Behälter, nur Standardbibliothek | keine Prüfung und kein Alias für einen umbenannten Schlüssel |
| TypedDict | Annotationen für die Dictionaries, die Sie schon haben | nichts zur Laufzeit — und damit auch keine Kontrolle |
Die Struktur ist in allen dreien gleich; es ändert sich, wie viel der Typ für Sie tut.
Schlüsselwörter zerbrechen die Datei nicht mehr
{"class": 1} ergab:
class Root(BaseModel):
class: int
was kein Python ist — die Datei parst nicht einmal. Schlüsselwörter bekommen nun einen Unterstrich, und der Pydantic-Alias behält den Schlüssel:
class_: int = Field(alias="class")
Ein echter Fehler, beim Schreiben dieser Seite gefunden und behoben. TypedDict löst es anders: ein Schlüssel, der kein Attributname sein kann, schaltet die ganze Definition auf die funktionale Syntax um, Root = TypedDict('Root', {"class": int}), wo Schlüssel Zeichenketten sind und alles geht.
Was eine Probe Ihnen nicht sagen kann
Nichts ist | None, und nichts hat einen Vorgabewert: jedes Feld ist Pflicht, weil die Probe es enthielt. Ein null ergibt den Typ None, der nichts anderes annimmt — ist das Feld „eine Zeichenkette, manchmal null“, lautet die Änderung str | None, und = None, wenn es fehlen darf.
Zwei Schlüssel, die denselben snake_case ergeben — fooBar und foo_bar —, werden durch ein nummeriertes Suffix getrennt statt verschmolzen, und der Alias hält fest, welcher welcher war.
Datenschutz ab Werk
Alles läuft lokal in deinem Browser mit JavaScript. Deine Daten werden nie hochgeladen, wodurch das Tool auch für sensible Inhalte sicher ist und offline funktioniert.