UTILS.
100% in de browser
🛡️

JSON naar Zod-schema

Plak een voorbeeld-JSON en genereer een Zod-schema plus een afgeleid TypeScript-type, zodat één vorm valideert tijdens runtime en typet tijdens compileren.

uitvoer

Over deze tool

De tool JSON naar Zod-schema zet een geplakte JSON-voorbeeld om in een direct bruikbaar Zod-schema en het bijbehorende TypeScript-type. Zod is de dominante TypeScript-validatiebibliotheek, en het met de hand schrijven van z.object-bomen voor echte API-payloads is traag en foutgevoelig. Deze converter parseert je JSON met JSON.parse, loopt de waarde recursief door en produceert idiomatisch Zod: strings worden z.string(), integers z.number().int(), andere getallen z.number(), booleans z.boolean(), null z.null(), en geneste objecten hun eigen benoemde z.object({...})-schema's.

Alles draait lokaal in je browser — je JSON wordt in de pagina geparseerd en nooit geüpload, dus gevoelige payloads blijven op je apparaat. Arrays leiden hun elementtype af door elk element diep samen te voegen, dus een array van objecten met licht verschillende sleutels levert één schema op waarin sleutels die in sommige elementen ontbreken als .optional() worden gemarkeerd. ISO-8601 datum-tijdstrings worden herkend en als z.string().datetime() weergegeven. Objectsleutels die geen geldige identifiers zijn, worden veilig van aanhalingstekens voorzien.

De uitvoer is een compleet module: een geëxporteerde const voor elk objectschema (kinderen gedefinieerd vóór de ouders die ernaar verwijzen) gevolgd door export type Root = z.infer<typeof Root>, zodat je gratis compile-time types krijgt. Gebruik het root-naamveld om het schema op het hoogste niveau te hernoemen, en de ontbrekende-sleutelschakelaar om afwezige sleutels als .optional() (standaard) of .nullable() te behandelen. Kopieer het resultaat of download het als een .ts-bestand.

Veelgestelde vragen

Hoe worden JSON-types op Zod afgebeeld?
string naar z.string(), een ISO datum-tijdstring naar z.string().datetime(), integers naar z.number().int(), andere getallen naar z.number(), booleans naar z.boolean(), null naar z.null(), arrays naar z.array(...), en objecten naar een benoemde z.object({...}). Lege arrays worden z.array(z.unknown()).
Hoe worden optionele of nullable velden afgehandeld?
Wanneer de elementen van een array of samengevoegde broers en zussen een sleutel missen, wordt die sleutel als .optional() gemarkeerd. Een waarde die als null wordt gezien wordt z.null() of voegt .nullable() toe. Met de ontbrekende-sleutelschakelaar kies je .optional() (standaard) of .nullable() voor sleutels die in sommige voorbeelden afwezig zijn.
Geeft het me ook een TypeScript-type?
Ja. Na het schema produceert het export type Root = z.infer<typeof Root>, zodat het afgeleide statische type uit het schema zelf wordt afgeleid — één bron van waarheid voor zowel runtime-validatie als compile-time types.
Wordt mijn JSON ergens geüpload?
Nee. Het parseren en genereren van code gebeurt volledig in je browser met JSON.parse en gewoon JavaScript. Er wordt niets naar een server gestuurd, dus je kunt veilig privé API-responses plakken.

Meer tools