JSON zu Typen
Aus einem JSON-Beispiel TypeScript-Interfaces, Go-Structs, Python-Modelle, C#-Klassen, Rust-Structs oder ein JSON Schema erzeugen.
JSON zu Typen - TypeScript, Go, Python, C#, Rust und JSON Schema
Fügen Sie ein JSON-Beispiel ein, etwa die Antwort einer API, und Sie erhalten die passenden Typdefinitionen: TypeScript-Interfaces, Go-Structs mit JSON-Tags, Pydantic-Modelle oder Dataclasses, C#-Klassen, Rust-Structs für serde oder ein JSON Schema. Verschachtelte Objekte werden zu eigenen benannten Typen, sodass sich das Ergebnis liest wie von Hand geschriebener Code.
API-Antworten enthalten oft echte Kundendaten, Tokens und interne IDs. Die Umwandlung läuft vollständig in Ihrem Browser, nichts davon wird also irgendwohin gesendet.
So gehen Sie vor
- Fügen Sie JSON in das linke Feld ein oder klicken Sie auf Beispiel, um ein Beispiel zu sehen.
- Wählen Sie unter Ausgabe die Zielsprache.
- Legen Sie unter Name des Wurzeltyps den Namen des obersten Typs fest; bei TypeScript wählen Sie zusätzlich
interfaceodertype. - Kopieren Sie das Ergebnis in Ihr Projekt.
Wie die Typen ermittelt werden
- Zahlen werden zu Ganzzahlen, wenn jeder Wert ganzzahlig ist, sonst zu Gleitkommazahlen:
42und18.5im selben Feld ergeben einen Float. - Arrays von Objekten werden zusammengeführt: Jeder Schlüssel, der in irgendeinem Element vorkommt, erscheint im Typ.
- Optionale Felder: Ist Fehlende Schlüssel als optional markieren eingeschaltet, wird ein Schlüssel, der in manchen Elementen fehlt, optional (
coupon?: string,omitempty,Option,= None). - Nullable Felder: Ein Wert, der in einem Element
nullist, macht das Feld nullable, zum Beispielstring | nulloder*stringin Go. - Gemischte Typen, etwa eine Zahl in einem Element und ein String in einem anderen, ergeben
unknown,Anyoderinterface{}, damit Sie selbst entscheiden können. - Namen stammen von den Schlüsseln: Aus
addresswirdAddress, und die Elemente vonordersergebenOrder. Objekte mit gleicher Struktur teilen sich einen Typ.
Je nach Sprache
| Ausgabe | Was Sie erhalten |
|---|---|
| TypeScript | export interface oder export type; Schlüssel, die keine gültigen Namen sind, werden in Anführungszeichen gesetzt |
| Go | Exportierte Structs mit json-Tags, int64 und float64 sowie gängige Abkürzungen wie ID und URL |
| Python (Pydantic) | BaseModel-Klassen; Felder in snake_case mit Field(alias=...), wenn der JSON-Schlüssel abweicht |
| Python (dataclass) | @dataclass-Klassen, optionale Felder stehen am Ende, wie Dataclasses es verlangen |
| C# | Klassen mit [JsonPropertyName] für System.Text.Json, long, double und List<T> |
| Rust | Structs, die Serialize und Deserialize ableiten, mit #[serde(rename)] wo nötig |
| JSON Schema | Ein Schema nach Draft 2020-12 mit required-Listen, bereit für Validatoren |
So erhalten Sie die genauesten Typen
Ein Typ ist nur so vollständig wie das Beispiel, aus dem er stammt. Verwenden Sie eine Antwort, die jedes optionale Feld mindestens einmal enthält, und fügen Sie lieber ein Array mit mehreren unterschiedlichen Elementen ein als ein einzelnes, damit beim Zusammenführen sichtbar wird, welche Felder variieren. Datumsangaben kommen in JSON als Strings an und bleiben Strings; wandeln Sie sie in Ihrem Code um, wo Sie echte Datumstypen brauchen.
Verwandte Werkzeuge
Um das JSON vorher aufzuräumen oder zu prüfen, nutzen Sie den JSON Formatter. Um es in YAML, CSV oder XML umzuwandeln, nutzen Sie den JSON-Konverter. Die Aufgabenseiten öffnen dieses Werkzeug mit bereits gewählter Sprache: JSON to TypeScript, JSON zu Go, JSON zu Python, JSON zu C# und JSON Schema Generator.