JSON in TypeScript — auch Zod, Go, Python, Java, C#, Rust
Füge ein JSON-Beispiel ein und erhalte TypeScript-Interfaces, ein Zod-Schema, ein JSON Schema oder Typen für Go, Python, Java, C#, Kotlin, Swift und Rust.
Die Typen werden nur aus dem Beispiel abgeleitet. Ein Feld, das in deinem Beispiel null ist, wird zu null oder any; füge ein umfangreicheres Beispiel (oder ein Array mit mehreren Datensätzen) ein, um genauere Typen zu bekommen.
Läuft komplett in deinem Browser. Dein JSON wird nie hochgeladen und ist daher auch für echte API-Antworten sicher. Alle kostenlosen Tools ansehen.
Ein Problem gefunden oder etwas, das besser sein könnte? Wir lesen jede Nachricht und beheben Fehler schnell.
Dieser kostenlose JSON-zu-TypeScript-Konverter liest ein JSON-Beispiel, etwa eine API-Antwort oder eine Konfigurationsdatei, und schreibt die passenden TypeScript-Interfaces, mit einem benannten Typ für jedes verschachtelte Objekt. Aus derselben Eingabe entstehen auch ein Zod-Schema, ein JSON Schema, Go-Structs, Python-Dataclasses oder Pydantic-Modelle sowie Klassen für Java, C#, Kotlin, Swift und Rust – Schluss mit dem Abtippen von Feldnamen.
Die Typinferenz übernimmt quicktype, die Open-Source-Engine hinter quicktype.io und der Editor-Erweiterung „Paste JSON as Code“, direkt in deinem Browser. Sie führt alle Objekte in einem Array zusammen, sodass ein Feld, das nur in manchen Datensätzen vorkommt, optional wird. Sie kann nur aus dem ableiten, was sie sieht: Ein Feld, das in deinem Beispiel null ist, wird als null typisiert, und ein leeres Array als Array von beliebigem Inhalt. Füge ein Beispiel mit echten Werten oder mehrere Datensätze ein, um die genauesten Typen zu bekommen.
So funktioniert’s
- Füge ein JSON-Objekt oder ein Array von Objekten ein. Zum Start ist ein Beispiel-Benutzerdatensatz geladen.
- Wähle die Ausgabe: TypeScript-Interfaces, Type-Aliasse, Zod, JSON Schema, Go, Python, Java, C#, Kotlin, Swift oder Rust.
- Lege den Namen des Wurzeltyps fest (zum Beispiel User oder OrderResponse). Verschachtelte Typen werden nach ihren Schlüsseln benannt.
- Setze das Häkchen bei „Alle Eigenschaften optional machen“ für Teil-Payloads wie PATCH-Bodys. Entferne das Häkchen bei „Nur Typen“, um Serialisierungs-Helfer zu bekommen, wo die Sprache sie unterstützt.
- Kopiere den Code oder lade ihn als Datei mit der passenden Endung herunter.
Häufige Fragen
Wie wandle ich JSON in ein TypeScript-Interface um?
Füge das JSON in das Feld ein, während „TypeScript (Interfaces)“ ausgewählt ist. Jedes Objekt wird zu einem exportierten Interface: Strings werden zu string, Zahlen zu number, Booleans zu boolean, Arrays zu T[], und verschachtelte Objekte bekommen ein eigenes Interface, benannt nach dem Schlüssel, etwa address → Address. Kopiere das Ergebnis in eine .ts-Datei und importiere es dort, wo du die Antwort parst.
Sollte ich ein Interface oder einen Type-Alias verwenden?
Für Objektformen sind sie fast austauschbar. Interfaces lassen sich erweitern und durch erneute Deklaration zusammenführen, und viele Style-Guides bevorzugen sie für öffentliche Objekttypen. Type-Aliasse können zusätzlich Unions und Mapped Types ausdrücken. Die Option „TypeScript (Type-Aliasse)“ erzeugt `export type User = { ... }`, falls deine Codebasis diesen Stil bevorzugt.
Wie werden optionale Felder erkannt?
Aus dem Beispiel. Ist dein JSON ein Array von Objekten und fehlt ein Schlüssel in manchen davon, wird diese Eigenschaft als optional markiert (name?: string). Ein Schlüssel, der in jedem Datensatz vorhanden, aber null ist, wird zu null, und einer, der in manchen Datensätzen ein String und in anderen null ist, wird zu null | string. Um alle Eigenschaften optional zu machen, nutze die entsprechende Option.
Warum ein Zod-Schema statt eines TypeScript-Interface?
Ein Interface existiert nur zur Kompilierzeit; es kann nicht prüfen, ob eine API wirklich das zurückgegeben hat, was du erwartest. Ein Zod-Schema validiert die Daten zur Laufzeit (UserSchema.parse(data) wirft einen Fehler, wenn ein Feld fehlt oder den falschen Typ hat) und liefert dir den TypeScript-Typ über z.infer – eine Definition deckt also beides ab. Der erzeugte Zod-Code exportiert sowohl das Schema als auch den abgeleiteten Typ.
Erkennt er Datumswerte und UUIDs?
Nur wenn du „Datumswerte, UUIDs und Zahlen in Strings erkennen“ einschaltest. Standardmäßig ist das aus, weil JSON keinen Datumstyp hat: JSON.parse gibt "2026-03-14T09:26:53Z" als String zurück, eine Typisierung als Date wäre also falsch, solange du nicht auch den erzeugten Konverter verwendest. Mit eingeschalteter Erkennung bekommt Go time.Time, C# DateTimeOffset und Guid und Python datetime und UUID.
Wird mein JSON hochgeladen?
Nein. Die quicktype-Bibliothek wird einmal heruntergeladen (etwa 1 MB) und läuft in deinem Browser-Tab. Dein JSON wird nirgendwohin gesendet, du kannst also auch echte API-Antworten mit personenbezogenen Daten bedenkenlos einfügen.
Wie JSON-Werte in den einzelnen Sprachen abgebildet werden
• Strings: string in TypeScript, Go, Swift und Kotlin (String), str in Python, String in Java und Rust, string in C#.
• Ganze Zahlen: number in TypeScript, int64 in Go, int in Python, long in Java, Long in Kotlin, long in C#, Int in Swift, i64 in Rust. Zahlen mit Dezimalpunkt werden zu float64, float oder double.
• Booleans: boolean, bool, Boolean, Bool – je nachdem, wie die Sprache es schreibt.
• Arrays: T[] in TypeScript, []T in Go, List[T] oder list[T] in Python, List<T> in Java, Kotlin und C#, [T] in Swift, Vec<T> in Rust.
• Verschachtelte Objekte: ein eigener benannter Typ bzw. eine eigene Klasse. Objekte mit vielen dynamischen Schlüsseln (etwa eine Map von IDs) werden erkannt und als Map oder Record typisiert statt mit Hunderten von Feldern.
• null: null in TypeScript, interface{} in Go, None in Python, object in C#. Gib dem Feld in deinem Beispiel einen echten Wert, um einen brauchbaren Typ zu bekommen.
Genaue Typen aus einem Beispiel gewinnen
Die Inferenz ist nur so gut wie das Beispiel. Drei Gewohnheiten machen einen großen Unterschied. Erstens: Füge mehrere Datensätze als Array statt eines einzelnen Objekts ein, damit optionale Felder und gemischte Typen sichtbar werden. Zweitens: Ersetze nulls durch realistische Werte, wenn du den Typ kennst, denn ein Feld, das in jedem Datensatz null war, liefert keine Information. Drittens: Benenne den Wurzeltyp nach dem, was die Payload tatsächlich ist (InvoiceResponse, nicht Root); verschachtelte Typen werden nach ihren Schlüsseln benannt und lesen sich in einer Codebasis viel besser, wenn die Wurzel aussagekräftig ist.
Wenn die API dir gehört, ist es langfristig besser, Typen aus ihrem Schema (OpenAPI oder JSON Schema) zu generieren statt aus Beispielen. Die JSON-Schema-Ausgabe hier ist ein brauchbarer Ausgangspunkt, um dieses Schema zu schreiben.
Ähnliche kostenlose Tools
- JSON Formatter — JSON formatieren, minifizieren und validieren, Parse-Fehler mit Zeile und Spalte. Im Browser, ohne Upload.
- curl in Code — Füge einen curl-Befehl ein, auch aus „Als cURL kopieren“ in Chrome, und erhalte dieselbe Anfrage in Python, JavaScript, Node, Go, PHP, Ruby, Java, C#, wget oder HTTPie.
- YAML-Validator — Prüfe YAML mit exakter Zeile und Spalte jedes Fehlers und finde die Fehler, die Parser stillschweigend akzeptieren: yes/no-Booleans, Tabs, doppelte Schlüssel.
- JWT-Decoder — Dekodiere Header und Payload eines JWT, lies das Ablaufdatum in Klartext, prüfe HS-, RS-, PS- und ES-Signaturen oder signiere ein neues Token. Nichts verlässt deinen Browser.
- SQL-Formatierer — Formatiere unordentliches SQL zu lesbaren, einheitlich eingerückten Abfragen für PostgreSQL, MySQL, T-SQL, BigQuery und mehr. Läuft im Browser.