Erzeugt TypeScript-Interfaces, Zod-Schemata und Pydantic-Modelle aus einem JSON-Beispiel auf dieser Seite. Die Ausgabe wird vor der Veröffentlichung mit tsc --strict, Zod 3 und 4 sowie Pydantic 2 geprüft.
Läuft lokal in deinem BrowserFügen Sie eine API-Antwort, Fixture oder ein Konfigurationsobjekt ein. Das Beispiel bleibt in diesem Browser.
Generate from a JSON sample to create TypeScript types.
Die Inferenz basiert auf dem bereitgestellten Beispiel. Prüfen Sie IDs, nullable-Werte, Datumszeichenfolgen und fachliche Einschränkungen, bevor Sie erzeugte Typen produktiv verwenden.
JSON-Beispiel einfügen, Wurzeltyp benennen, Typen erzeugen drücken: dieselbe Struktur erscheint als TypeScript, Zod und Pydantic, jeweils in einem Tab. Das Beispiel liest der Browser auf dieser Seite; nichts wird hochgeladen und keine Anfrage trägt es irgendwohin.
Die abgeleiteten Namen werden vor der Veröffentlichung mit echten Compilern geprüft: die TypeScript-Ausgabe besteht tsc --strict, das Zod-Schema validiert sein eigenes Beispiel unter Zod 3 und Zod 4, und die Pydantic-Modelle lassen sich unter Pydantic 2 importieren und validieren.
Ein JSON-Objekt wird ein Interface (oder ein Typ-Alias, wenn das Beispiel ein Array oder ein einzelner Wert ist), Arrays werden Array<…>, und ein leeres Objekt wird Record<string, unknown>. Zod erhält dieselbe Struktur als Schema plus einen z.infer-Typ, Pydantic eine BaseModel-Klasse pro Objekt mit List, Optional, Union und Dict aus typing.
Die Checkbox Export declarations entscheidet, ob die TypeScript- und Zod-Zeilen ein export tragen; die Pydantic-Ausgabe ist in beiden Fällen reines Python.
Alle Einträge eines Arrays werden zusammengeführt: ein Schlüssel, der nur in einem Teil der Objekte steht, wird optional (role?: string in TypeScript, .optional() in Zod, Optional[…] = None in Pydantic); ein Schlüssel mit unterschiedlichen Werttypen wird eine Union. Objekte zusammen mit Skalaren oder null ergeben ebenfalls eine Union, und null verdeckt den anderen Typ nie — er bleibt daneben stehen.
Ein leeres Array ergibt unknown / z.unknown() / List[Any], denn ein Beispiel ohne Einträge trägt keine Typinformation.
Schlüssel, die Python nicht schreiben kann, behalten ihre JSON-Schreibweise als Alias: {"a-b": 1} wird a_b mit alias="a-b", class, import oder None werden zu class_, import_ oder None_, damit die Datei importierbar bleibt. Schlüssel wie model_config, model_dump und alles ab model_-Anfang werden ebenfalls ergänzt, weil Pydantic diesen Namensraum reserviert.
Zwei Schlüssel, die sonst zu einem Feld zusammenfallen würden, bleiben getrennt: {"a-b": 1, "a_b": 2} ergibt a_b und a_b_2 mit eigenen Aliasen, und verschachtelte Objekte mit gleichem Namen bekommen eigene Klassen.
Alles läuft im Tab: die Umwandlung sendet keine Anfrage, und das Beispiel ist nach dem Neuladen weg. Ein 2-MB-Beispiel ist in Chrome in rund 0,35 s typisiert.
Die Typen stammen aus einem einzigen Beispiel und beschreiben deshalb diesen Aufbau: optionale Schlüssel sind die im Array fehlenden, nicht die, die Ihre API auslassen darf, und Texte bleiben string — E-Mail-, Datums- oder UUID-Formate werden nicht geraten. Gelesen wird mit dem JSON-Parser des Browsers, daher verlieren ganze Zahlen über 2^53 an Genauigkeit und landen in der Pydantic-Ausgabe als float.