Was dieses Werkzeug tut
Aus einer JSON-Probe werden Zod-Schemas, ein const je Objekt.
{ "id": 1, "name": "Ada", "address": { "city": "Paris" } }
import { z } from "zod";
export const AddressSchema = z.object({
city: z.string(),
});
export const RootSchema = z.object({
id: z.int(),
name: z.string(),
address: AddressSchema,
});
Die Kinder kommen zuerst: es sind Laufzeit-Konstanten, und ein Schema muss vorhanden sein, bevor ein anderes es nennt.
Zahlen werden gelesen, wie sie geschrieben wurden
z.int() für eine Ganzzahl, z.number() für alles mit Dezimalpunkt oder Exponent:
{ "price": 10.0, "quantity": 3 }
price: z.number(),
quantity: z.int(),
Bis vor kurzem kam price als z.int() heraus: 10.0 wird zu einer ganzen Zahl geparst, und nichts bewahrte das Literal. Das Schema wies dann 10.5 ab — höchstwahrscheinlich den nächsten Datensatz. JSON hat einen einzigen Zahlentyp; die geschriebene Form ist das einzige Zeugnis dessen, was der Erzeuger meinte, und die Umwandlung liest sie nun. Gefunden beim Schreiben dieser Seite, behoben.
Zod-4-Syntax
z.int() ist die Schreibweise von Zod 4. In Zod 3 schreiben Sie z.number().int(); sonst unterscheidet sich in dieser Ausgabe nichts zwischen den Versionen.
Was eine Probe nicht für Sie entscheiden kann
- Nichts ist
.optional(). Ein einmal gesehener Schlüssel kann auftreten; ob immer, steht nicht im Dokument. nullergibtz.null(), ein Schema, das nichts anderes annimmt. Ist das Feld „eine Zeichenkette, manchmal fehlend“, gehört.nullable()Ihnen.- Unbekannte Schlüssel werden entfernt, nicht abgelehnt, denn so ist Zods Vorgabe.
.strict()ist eine Entscheidung über Ihre API. - Ein gemischtes Array wird eine Union:
[1, "a"]ergibtz.array(z.union([z.int(), z.string()]))— genau die Probe, womöglich weiter als Ihre echten Daten.
Jeder dieser Punkte ist eine Stelle, an der das erzeugte Schema nur ein Anfang ist, und die Seite sagt es, statt es Sie im Review entdecken zu lassen.
Datenschutz ab Werk
Alles läuft lokal in deinem Browser mit JavaScript. Deine Daten werden nie hochgeladen, wodurch das Tool auch für sensible Inhalte sicher ist und offline funktioniert.