UTILS.
100 % im Browser
🛡️

JSON zu Zod-Schema

Fügen Sie einen JSON-Beispielwert ein und erzeugen Sie ein Zod-Schema plus einen abgeleiteten TypeScript-Typ, sodass eine Form zur Laufzeit validiert und zur Kompilierzeit typisiert.

Ausgabe

Über dieses Tool

Das Tool JSON zu Zod-Schema verwandelt ein eingefügtes JSON-Beispiel in ein einsatzbereites Zod-Schema und den passenden TypeScript-Typ. Zod ist die dominierende TypeScript-Validierungsbibliothek, und das händische Schreiben von z.object-Bäumen für echte API-Payloads ist langsam und fehleranfällig. Dieser Konverter parst Ihr JSON mit JSON.parse, durchläuft den Wert rekursiv und gibt idiomatisches Zod aus: Strings werden zu z.string(), Ganzzahlen zu z.number().int(), andere Zahlen zu z.number(), Booleans zu z.boolean(), null zu z.null() und verschachtelte Objekte zu ihren eigenen benannten z.object({...})-Schemas.

Alles läuft lokal in Ihrem Browser — Ihr JSON wird auf der Seite geparst und niemals hochgeladen, sodass sensible Payloads auf Ihrem Gerät bleiben. Arrays leiten ihren Elementtyp ab, indem jedes Element tief zusammengeführt wird, sodass ein Array von Objekten mit leicht unterschiedlichen Schlüsseln ein einziges Schema erzeugt, in dem Schlüssel, die einigen Elementen fehlen, mit .optional() markiert werden. ISO-8601-Datum-Zeit-Strings werden erkannt und als z.string().datetime() ausgegeben. Objektschlüssel, die keine gültigen Bezeichner sind, werden sicher in Anführungszeichen gesetzt.

Die Ausgabe ist ein vollständiges Modul: ein exportierter const für jedes Objektschema (Kinder vor den Eltern definiert, die sie referenzieren) gefolgt von export type Root = z.infer<typeof Root>, sodass Sie Typen zur Kompilierzeit gratis erhalten. Verwenden Sie das Root-Namen-Feld, um das oberste Schema umzubenennen, und den Fehlende-Schlüssel-Umschalter, um fehlende Schlüssel als .optional() (Standard) oder .nullable() zu behandeln. Kopieren Sie das Ergebnis oder laden Sie es als .ts-Datei herunter.

Häufig gestellte Fragen

Wie werden JSON-Typen auf Zod abgebildet?
string zu z.string(), ein ISO-Datum-Zeit-String zu z.string().datetime(), Ganzzahlen zu z.number().int(), andere Zahlen zu z.number(), Booleans zu z.boolean(), null zu z.null(), Arrays zu z.array(...) und Objekte zu einem benannten z.object({...}). Leere Arrays werden zu z.array(z.unknown()).
Wie werden optionale oder nullbare Felder behandelt?
Wenn den Elementen eines Arrays oder zusammengeführten Geschwistern ein Schlüssel fehlt, wird dieser Schlüssel mit .optional() markiert. Ein als null gesehener Wert wird zu z.null() oder fügt .nullable() hinzu. Der Fehlende-Schlüssel-Umschalter lässt Sie .optional() (Standard) oder .nullable() für Schlüssel ausgeben, die in einigen Beispielen fehlen.
Erhalte ich auch einen TypeScript-Typ?
Ja. Nach dem Schema gibt es export type Root = z.infer<typeof Root> aus, sodass der abgeleitete statische Typ aus dem Schema selbst stammt — eine einzige Quelle der Wahrheit für Laufzeitvalidierung und Kompilierzeit-Typen.
Wird mein JSON irgendwohin hochgeladen?
Nein. Das Parsen und die Codegenerierung erfolgen vollständig in Ihrem Browser mit JSON.parse und reinem JavaScript. Nichts wird an einen Server gesendet, sodass Sie private API-Antworten sicher einfügen können.

Weitere Tools