Kategorie: Entwicklung

JSON-zu-Zod-Schema-Konverter

Eigene IdeeTool fehlt?

Erzeuge ein Zod-Schema aus einem JSON-Beispiel, ohne deine Daten hochzuladen

Füge JSON ein und erzeuge im Browser ein Zod-Schema. Objekte, Arrays, Strings, Zahlen, Booleans, Nullwerte und optionale Felder werden abgeleitet, die Ausgabe ist TypeScript-fertig. Nichts wird hochgeladen.

Zod-Schema
import { z } from "zod";

export const userSchema = z.object({
  id: z.number(),
  name: z.string(),
  isActive: z.boolean(),
  score: z.null(),
  tags: z.array(z.string()),
  address: z.object({
    city: z.string(),
    country: z.string(),
  }),
  posts: z.array(z.object({
    slug: z.string(),
    views: z.number(),
    pinned: z.boolean().optional(),
  })),
});

export type User = z.infer<typeof userSchema>;

Nur aus diesem Beispiel abgeleitet: Es sieht, dass ein Feld eine Zeichenkette enthielt, nicht dass diese Zeichenkette eine E-Mail sein, eine Mindestlänge haben oder einem von wenigen erlaubten Werten entsprechen muss. Behandle die Ausgabe als Ausgangspunkt und zieh die Regeln selbst nach.

Alles auf dieser Seite wird in Ihrem Browser verarbeitet. Nichts wird hochgeladen.

Alles auf dieser Seite wird in Ihrem Browser verarbeitet. Nichts wird hochgeladen.

Wozu dieses Werkzeug dient

Dieses Werkzeug liest ein JSON-Beispiel lokal und entwirft das passende Zod-Objektschema, samt verschachtelter Objekte, Arrays und Unions. Wenn ein Array Objekte enthält, die nicht zusammenpassen – ein Element hat ein Feld `pinned`, das nächste nicht –, wird der Schlüssel als `.optional()` markiert statt stillschweigend verworfen, denn genau diese Abweichung ist meist das, was du am dringendsten sehen musstest. Ein Wert, der manchmal null war, wird zu `.nullable()` statt zu einer Union aus zwei Mitgliedern. Was es nicht kann: Regeln erfinden, die es nie gesehen hat. Beispieldaten zeigen, dass ein Feld eine Zeichenkette enthielt, nicht dass diese eine E-Mail sein, unter 80 Zeichen bleiben oder einer von drei erlaubten Werten sein muss. Die Ausgabe ist ein Gerüst zum Nachziehen, kein fertiger Vertrag.

So funktioniert es

  1. Füge ein repräsentatives JSON-Beispiel ein – je mehr Varianten es abdeckt, desto besser die Ableitung.
  2. Benenne das Schema und entscheide, ob der zod-Import und der abgeleitete Typ mitkommen sollen.
  3. Kopiere den erzeugten Code und zieh anschließend die Feldregeln nach, die dein Beispiel nicht zeigen konnte.

Datenschutz

Dieses Werkzeug läuft vollständig in Ihrem Browser. Ihre Eingabe wird nie hochgeladen, gespeichert oder weitergegeben – beim Schließen des Tabs ist sie weg.

Häufig gestellte Fragen

Wird mein JSON hochgeladen?
Nein. Das JSON wird vollständig im Browser-Tab geparst und das Schema dort erzeugt; weder Eingabe noch Ausgabe gehen an einen Server, werden protokolliert oder gespeichert.
Wie genau ist die abgeleitete Validierung?
Genau so genau wie dein Beispiel. Struktur und Typen werden zuverlässig erfasst, aber Einschränkungen, die die Struktur nicht ausdrückt – Formate, Wertebereiche, Aufzählungen oder welche Felder produktiv wirklich Pflicht sind –, kann sie nicht kennen. Prüfe jedes Feld, bevor du dich darauf verlässt.
Werden Arrays und optionale Felder unterstützt?
Ja. Arrays werden zu z.array(...), und wenn die Objekte eines Arrays unterschiedliche Schlüssel haben, werden die nicht überall vorhandenen als .optional() markiert. Ein Feld, das manchmal null war, wird zu .nullable().
Kann ich die Ausgabe in TypeScript verwenden?
Ja. Die erzeugte Datei exportiert das Schema und – wenn du die Option anlässt – einen `z.infer`-Typalias, sodass Validator und passender statischer Typ aus derselben Quelle stammen.