Skip to content

JSON naar Zod-schema omzetter

Plak JSON en krijg direct een kant-en-klaar Zod-schema, 100% in je browser. Correcte z.number().int(), .optional() en .nullable(), plus een z.infer-type. Gratis.

Geen tracking Draait in je browser Gratis
Opties
0 tekens
Zod-uitvoer
0 regels
Uitvoer geverifieerd tegen de parsing-semantiek van Zod v3 en v4 voor API-payloads uit de praktijk. — Go Tools Team · Jul 2, 2026

Wat is een Zod-schema?

Een Zod-schema is een TypeScript-first-beschrijving van de vorm van een waarde die data valideert tijdens runtime en een statisch type afleidt tijdens het compileren. Er een genereren uit een JSON-voorbeeld betekent dat je nooit met de hand validatie-boilerplate schrijft voor API-responses, formulieren of configuratiebestanden. Deze Zod-schemagenerator leidt correcte typen af, markeert ontbrekende sleutels als .optional(), null-waarden als .nullable(), en geeft je een z.infer-type — allemaal 100% in je browser.

Voorbeelden

API-respons

{"id":101,"name":"Ada Lovelace","email":"ada@example.com","active":true,"roles":["admin","user"]}
import { z } from "zod";

export const RootSchema = z.object({
  id: z.number().int(),
  name: z.string(),
  email: z.string(),
  active: z.boolean(),
  roles: z.array(z.string()),
});

export type Root = z.infer<typeof RootSchema>;

Een typische REST-payload wordt een kant-en-klaar Zod-schema. Gehele getallen leiden z.number().int() af, en de roles-array wordt z.array(z.string()). Een z.infer-type krijg je er gratis bij.

Genest object

{"repo":"zod","owner":{"login":"colinhacks","id":100}}
import { z } from "zod";

export const OwnerSchema = z.object({
  login: z.string(),
  id: z.number().int(),
});

export const RootSchema = z.object({
  repo: z.string(),
  owner: OwnerSchema,
});

export type Root = z.infer<typeof RootSchema>;

Geneste objecten worden hun eigen benoemde schema (OwnerSchema) en worden per veld gerefereerd. Kindschema's worden gedeclareerd vóór het ouderschema dat ze gebruikt, en identieke vormen worden eenmaal gedeclareerd en hergebruikt.

Array van objecten (optioneel veld)

{"users":[{"id":1,"nick":"x"},{"id":2}]}
import { z } from "zod";

export const UserSchema = z.object({
  id: z.number().int(),
  nick: z.string().optional(),
});

export const RootSchema = z.object({
  users: z.array(UserSchema),
});

export type Root = z.infer<typeof RootSchema>;

Arrays van objecten worden samengevoegd tot één element-schema. Een sleutel die in sommige items ontbreekt, wordt .optional(), zodat het parsen ook slaagt wanneer hij afwezig is.

Nullable veld en getalunificatie

{"items":[{"sku":"A1","discount":0.1},{"sku":"A2","discount":null}]}
import { z } from "zod";

export const ItemSchema = z.object({
  sku: z.string(),
  discount: z.number().nullable(),
});

export const RootSchema = z.object({
  items: z.array(ItemSchema),
});

export type Root = z.infer<typeof RootSchema>;

Een veld dat in sommige voorbeelden null is maar in andere getypeerd, wordt .nullable(). Omdat 0.1 een decimaalpunt heeft, unificeert het getal naar z.number() in plaats van z.number().int().

Zo zet je JSON om naar Zod

  1. 1

    Plak je JSON

    Zet een JSON-object, array of API-respons in het invoerveld. De conversie start direct.

  2. 2

    Stem de uitvoer af

    Hernoem het root-schema en schakel de import-regel, het z.infer-type of het export-sleutelwoord om, passend bij de stijl van je project.

  3. 3

    Kopieer of download

    Haal het gegenereerde Zod-schema met één klik op en plak het rechtstreeks in je validatielaag.

Common Use Cases

API-responses valideren
Zet een voorbeeldrespons van REST of GraphQL om in een Zod-schema en parse die op de fetch-grens, zodat misvormde data snel faalt met een duidelijke fout in plaats van door je app te lekken.
Typeveilige formulieren en invoer
Genereer een schema voor formulier- of query-invoer en hergebruik het z.infer-type in je UI en handlers voor end-to-end-typeveiligheid.
tRPC- en AI-tool-schema's
Genereer invoer- en uitvoerschema's voor tRPC-procedures of AI-tools met gestructureerde uitvoer uit een voorbeeldpayload in plaats van ze met de hand te schrijven.

Hoe de conversie werkt

Structurele afleiding
Elk object wordt een benoemd schema; identieke vormen worden eenmaal gedeclareerd en hergebruikt. Arrays van objecten worden sleutel voor sleutel samengevoegd, en sleutels die in sommige items ontbreken, worden .optional().
Correcte typetoewijzing
Gehele getallen worden z.number().int() en decimalen z.number(). Strings, booleans en null-waarden worden z.string(), z.boolean() en z.null(); een array van gemengde primitieven wordt een z.union().
TypeScript-typen inbegrepen
Voor het root-schema wordt een z.infer-type-alias uitgegeven, zodat het schema de enige bron van waarheid blijft en je typen nooit afwijken van je validatie.
100% aan de clientzijde
Het parsen en genereren draait in je browser zonder netwerkaanroepen, zodat je data privé blijft.

Tips voor schone Zod-schema's

Geef je root-schema een naam
Stel een betekenisvolle rootnaam in zoals User of ApiResponse in plaats van de standaard Root voor leesbare, zelfdocumenterende code.
Verfijn z.unknown() en unions
Lege of gemengde arrays produceren z.unknown() of een brede z.union(). Plak een rijker, representatief voorbeeld zodat de tool precieze typen afleidt, en scherp daarna alles aan wat dubbelzinnig blijft.
Valideer aan de grens
Roep safeParse() aan waar niet-vertrouwde data binnenkomt — API-responses, formulierinvoer, webhooks —, zodat foute data wordt opgevangen voordat ze je applicatielogica bereikt.

Veelgestelde vragen

Hoe zet ik JSON om naar een Zod-schema?
Plak je JSON in het vak links. De omzetter parset het direct in je browser en genereert rechts een Zod-schema, samen met een z.infer-type-alias. Klik op Kopiëren om het te pakken — geen upload, geen account, geen wachten.
Wat is het verschil tussen JSON naar Zod en JSON Schema naar Zod?
Deze tool neemt een voorbeeld-JSON-waarde — een API-respons of object — en leidt daaruit een Zod-schema af op basis van de vorm. JSON Schema naar Zod is een andere taak: het zet een bestaand JSON Schema-document om naar Zod. Heb je ruwe data, gebruik dan deze tool. Heb je al een JSON Schema-bestand, converteer dan dat.
Hoe krijg ik een TypeScript-type uit het schema?
Elk resultaat bevat een z.infer-type-alias, dus je krijgt een volledig getypeerde Root zonder die met de hand te schrijven. Houd het schema als enige bron van waarheid en laat TypeScript het type afleiden, zodat de twee nooit uit elkaar lopen. Je kunt de z.infer-regel uitschakelen in Opties als je alleen het schema wilt.
Hoe worden optionele en null-velden afgehandeld?
Wanneer een sleutel in sommige array-items voorkomt maar in andere niet, wordt zijn veld gemarkeerd als .optional(). Een veld dat in sommige voorbeelden null is en in andere getypeerd, wordt .nullable(). Een veld dat altijd alleen null is, wordt z.null(). Zod behandelt optioneel en nullable onafhankelijk, zodat het schema aansluit bij hoe je data daadwerkelijk varieert.
Welk getaltype genereert het?
Gehele getallen worden z.number().int(); elke waarde geschreven met een decimaalpunt of exponent wordt z.number(). Als een veld gehele getallen en decimalen mengt over voorbeelden heen, unificeert het naar z.number() zodat validatie nooit een legitieme waarde afwijst.
Werkt de uitvoer met Zod 3 en Zod 4?
Ja. De gegenereerde code gebruikt de gangbare, stabiele subset — z.object, z.string, z.number, z.array, z.union, .int, .optional, .nullable en z.infer — die zich in Zod 3 en Zod 4 gelijk gedraagt. Zorg er alleen voor dat het zod-pakket in je project is geïnstalleerd.
Hoe valideer ik data met het gegenereerde schema?
Importeer het schema en roep RootSchema.parse(data) aan om te throwen bij ongeldige invoer, of RootSchema.safeParse(data) om zonder te throwen een getypeerd succes- of foutresultaat te krijgen. Dit is ideaal op vertrouwensgrenzen zoals API-responses, formulierinvoer en omgevingsconfiguratie.
Hoe worden arrays en gemengde typen afgehandeld?
Een array van één type wordt z.array van dat type. Een array van objecten wordt sleutel voor sleutel samengevoegd tot één element-schema. Een array die primitieve typen mengt wordt een z.union, en alles wat dubbelzinniger is valt terug op z.unknown zodat je het kunt verfijnen vanuit een rijker voorbeeld.
Zijn mijn JSON-gegevens privé en veilig?
Ja. De conversie draait 100% in je browser met JavaScript. Je JSON — inclusief tokens, ID's of klantgegevens — verlaat de pagina nooit en wordt nooit naar een server verzonden.
Is de tool gratis? Heb ik een account nodig?
Hij is volledig gratis, zonder registratie, zonder limieten en zonder advertenties die de werkruimte vervuilen.

Gerelateerde tools

Alle tools bekijken →