Werkzeuge

JSON zu Zod-Schema

Erzeugen Sie ein Zod-Schema aus Beispiel-JSON, damit dieselbe Struktur zur Laufzeit geprüft und als TypeScript-Typ abgeleitet wird.

Läuft im BrowserCode-Konverter13.870
Kostenlos

Eingabe

0 B

Ergebnis

Das Ergebnis erscheint hier.

TypeScript-Typen verschwinden beim Kompilieren; ein Zod-Schema ist noch da, wenn die Antwort tatsächlich eintrifft, und z.infer macht daraus wieder den Typ. Dieses Werkzeug erzeugt das Schema aus einem Beispiel mit dem typescript-zod-Renderer von quicktype. Die Ausgabe importiert zod so, wie Version 4 es empfiehlt, mit import * as z from "zod", deklariert ein Schema pro Objektstruktur und exportiert jeweils den abgeleiteten Typ daneben. Unsere Tests führen den erzeugten Code unter zod 4 aus und prüfen, dass er genau das Beispiel akzeptiert, aus dem er erzeugt wurde – das Mindeste, was ein generiertes Schema leisten sollte.

So arbeitet es

  • Schlüssel, die in einigen Elementen eines Arrays fehlen, werden zu .optional(); Schlüssel, die manchmal null sind, werden zu einer Union mit z.null().
  • Die Schemas werden in Abhängigkeitsreihenfolge ausgegeben, sodass jedes verschachtelte Schema vor dem Objektschema deklariert ist, das es verwendet.
  • Die Datumserkennung macht aus ISO-Zeitstempeln z.coerce.date(), das den String in ein Date umwandelt; lassen Sie sie aus, um z.string() zu behalten.
  • Die Schemas sind einfache z.object-Aufrufe, unbekannte Schlüssel werden beim Parsen also entfernt; wechseln Sie von Hand zu z.strictObject oder z.looseObject, wenn Sie ein anderes Verhalten brauchen.

Wohin Ihre Daten gehen

Nirgendwohin. Dieses Werkzeug läuft vollständig in Ihrem Browser: Der eingefügte Text wird von der Seite verarbeitet und weder an einen Server übertragen noch protokolliert.

Dieses Tool ist kostenlos und braucht kein Konto. Die Ergebnisse existieren nur in Ihrer geöffneten Seite und werden nirgends gespeichert.

Was es kostet

Dieses Werkzeug ist kostenlos, ohne Anmeldung und ohne Punkte.

Häufige Fragen

Funktioniert die Ausgabe auch mit Zod 3?
Ja. Die verwendeten Aufrufe – z.object, z.array, z.union, z.null, .optional() und z.coerce.date() – gibt es in beiden Hauptversionen, und der Namespace-Import funktioniert auch mit 3.x. Geändert haben sich zwischen den Versionen die Formatierung von Fehlern und einige fortgeschrittene APIs, von denen keine im erzeugten Code vorkommt.
Warum ist das oberste Schema ein Array eines anderen Schemas?
Weil das Beispiel ein Array ist. Die Struktur der Elemente bekommt ein eigenes Schema – RepoElementSchema beim GitHub-Beispiel –, und der Name der obersten Ebene wird für das Array verwendet, sodass Sie mit derselben Datei ein einzelnes Element oder die ganze Liste validieren können.
Wie streng ist das erzeugte Schema?
Genau so streng wie das Beispiel, also nicht sehr. Ein String-Feld akzeptiert jeden String, nicht nur die eingefügten Werte, und Zahlen werden zu z.number(), ob sie ganzzahlig waren oder nicht. Verschärfen Sie es anschließend mit .int(), z.url(), z.email() oder z.enum(), wo immer Ihr API-Vertrag mehr aussagt, als ein einzelnes Beispiel kann.

Das Open Source dahinter

Dieses Werkzeug läuft auf glideapps/quicktype, veröffentlicht unter Apache-2.0. Wer dasselbe Verhalten im eigenen Programm braucht, greift zu dieser Bibliothek.

glideapps/quicktype

Auch bekannt als

  • JSON zu Zod
  • Zod Schema Generator
  • Zod Schema aus JSON erzeugen
  • JSON to Zod online
  • Zod v4 Schema
  • TypeScript Laufzeitvalidierung