JSON zu TypeScript / Go / Rust Struct-Generator
Fügen Sie JSON ein, wählen Sie die Zielsprache, erhalten Sie eine idiomatische Typdefinition. Unterstützt TypeScript, Go, Rust, Kotlin, Java, C# und Python TypedDict. Basiert auf quicktype, läuft im Browser.
- Fügen Sie eine repräsentative JSON-Probe in den linken Textbereich ein.
- Wählen Sie die Zielsprache aus dem Ziel-Dropdown.
- Klicken Sie auf Generieren. Der erste Klick lädt die Engine (~2–3 Sekunden bei 4G); spätere Generierungen sind sofort.
- Kopieren Sie das Ergebnis oder laden Sie es mit der richtigen Dateierweiterung herunter.
Was macht es?
Generiert idiomatische Typen in Ihrer Zielsprache, indem das Schema aus einer oder mehreren JSON-Proben abgeleitet wird. Feldtypen werden abgeleitet — Strings bleiben Strings, Zahlen werden zum numerischen Typ der Sprache, Booleans werden zu bool, Arrays werden zu Slices/Listen/Arrays, verschachtelte Objekte werden zu verschachtelten Typen. Optionale Felder (die manchmal null oder zwischen Proben fehlen) werden in der Ausgabe als nullable markiert. Basiert auf quicktype-core, derselben Engine hinter quicktype.io.
Beispiel
JSON-Eingabe:
{
"name": "Ada",
"age": 36,
"active": true,
"tags": ["math", "logic"]
} TypeScript-Ausgabe (Ziel = TypeScript, Typname = User):
export interface User {
name: string;
age: number;
active: boolean;
tags: string[];
} Häufige Fallstricke und wie man damit umgeht
Typ-Inferenz aus JSON hat grundlegende Grenzen — JSON trägt nicht genug Informationen, um ein Typsystem vollständig zu beschränken. Die folgenden Muster decken ab, wo der inferierte Typ möglicherweise nicht dem entspricht, was Sie wollen.
- Optional vs. erforderlich aus einer einzelnen Probe. Ein einzelnes JSON-Objekt kann dem Generator nicht sagen, welche Felder optional sind. Stellen Sie mehrere Proben bereit (fügen Sie ein JSON-Array repräsentativer Objekte ein), damit der Generator manchmal fehlende Felder als optional markieren kann.
- Leere Arrays. `{"items": []}` erzeugt ein Array von `any` — der Generator hat kein Element zum Inferieren. Fügen Sie mindestens ein gefülltes Beispiel hinzu oder fixen Sie den Typ nach der Generierung von Hand.
- Heterogene Array-Elemente. Ein JSON-Array `[1, "two"]` wird zu einem Union-Typ — das Ergebnis kann in einigen Zielsprachen (besonders Go) nicht ergonomisch sein. Wenn das Array in Ihren echten Daten homogen sein soll, korrigieren Sie die Probe.
- Datumszeichenfolgen. JSON hat keinen Date-Typ. ISO-8601-Datumszeichenfolgen werden als `string` inferiert. quicktype kann sie manchmal als Date in der TypeScript-Ausgabe erkennen — passen Sie manuell an, wenn Sie stärkere Typisierung wollen.
- Numerische IDs, die Präzision verlieren. JSON-Zahlen > 2^53 (große 64-Bit-IDs) verlieren Präzision, wenn sie von JavaScript geparst werden. Der generierte TypeScript-Typ verwendet trotzdem `number`. Für 64-Bit-Präzision verwenden Sie `string` in Ihrem JSON oder migrieren Sie manuell zu einem `bigint`-Typ.
- Felder mit Unterstrich vs. camelCase. Der Generator behält die JSON-Feldbenennung bei. Wenn Ihr JSON snake_case verwendet, aber die Zielsprache camelCase erwartet, verwendet die Ausgabe snake_case-Felder mit serde/json-Annotationen, wo zutreffend. Überschreiben Sie durch Nachbearbeitung oder die Verwendung von quicktype-CLI-Flags.
Häufig gestellte Fragen
Warum ist das erste Generieren langsam?
Das quicktype-Engine-Bundle ist etwa 465 KB gzipped. Es lädt beim ersten Generieren-Klick, was bei einer 4G-Verbindung 2–3 Sekunden dauert. Danach wird das Modul für den Rest der Seitensession zwischengespeichert — und der Browser cached es zwischen Besuchen, also sind nachfolgende erste Klicks ebenfalls sofort, sofern der Cache nicht geleert wurde.
Kann ich aus mehreren JSON-Proben generieren?
Verpacken Sie Ihre Proben in einem JSON-Array und fügen Sie das Array ein. Der Generator inferiert die Vereinigung der über die Proben hinweg gesehenen Felder und markiert Felder als optional, wenn sie in mindestens einer fehlen. Dies ist der richtige Weg, um sicherzustellen, dass Ihre generierten Typen Variationen in echten Daten tolerieren.
Welche Sprache sollte ich für Backend-Code wählen?
Passen Sie an, was Ihr Projekt bereits verwendet. Go-Ausgabe verwendet Standard-Struct-Tags für `encoding/json`. Rust verwendet serde-Derives. Kotlin verwendet kotlinx.serialization-Annotationen. Java erzeugt Jackson-kompatible POJOs. Die Wahl ist projekt-spezifisch, nicht präferenzbasiert.
Werden Feldkommentare beibehalten?
JSON hat keine Kommentar-Syntax, daher gibt es keine Kommentare in der Eingabe zum Übertragen. quicktype kann Doc-Kommentare in der Ausgabe für einige Sprachen einschließen — dies sind automatisch generierte Beschreibungen, kein Benutzerinhalt.
Wird mein JSON hochgeladen?
Nein. Alles läuft in Ihrem Browser — Ihre Eingabe wird lokal vom JavaScript-Modul quicktype-core auf dieser Seite verarbeitet. quicktype-core selbst lädt vom selben Origin (Static-Asset-Host dieser Site); kein Drittanbieter-Server sieht Ihre Daten.
Wie groß darf die JSON-Probe sein?
Bis zu etwa 5 MB JSON, bevor der Generator merkbar Zeit beansprucht. Der Generator ist für repräsentative Proben gedacht, nicht für vollständige Datensätze — typischerweise reicht eine Handvoll Objekte, um ein sauberes Schema abzuleiten.