Preskoči na sadržaj
100% lokalno

JSON na Zod shemu

Generirajte Zod validacijsku shemu i TypeScript tipove iz JSON uzorka, s otkrivanjem formata i enumeracija.

Unos
Rezultat

JSON na Zod shemu

Zalijepite JSON uzorak — odgovor API-ja, datoteku konfiguracije, red baze podataka — i dobijte gotovu Zod shemu u TypeScript-u. Tipovi se zaključuju po polju: primitivci se mapiraju na z.string(), z.number() i z.boolean(), polja s poljima imaju zaključeni tip elementa, a vrijednost koja se razlikuje između pojavljivanja postaje z.union(). Niz koji izgleda kao e-mail adresa, URL, UUID ili ISO datum dobiva odgovarajući validacijski kod — .email(), .url(), .uuid(), .date() ili .datetime() — umjesto običnog z.string().

Dajte mu niz objekata istog oblika, kao što su redovi iz krajnje točke popisa, a generator spaja svaki element prije tipiziranja polja: ključ koji nedostaje u nekim redovima postaje .optional(), ključ koji je ponekad null postaje .nullable() ili .optional() ovisno o odabranoj postavci, i polje koje ponavlja mali skup vrijednosti — stupac statusa ili uloge — postaje pravilno z.enum() umjesto otvorenog niza. Uključite „Podijeli ugniježđene objekte“ da biste izvukli svaki ugniježđeni objekt u vlastiti pojmovni izvoz umjesto jedne duboko ugniježđene doslovno vrijednosti, gdje identični oblici automatski dijele jednu shemu. Uključite „Stroga objekca“ da odbijete bilo koji ključ koji uzorak nikada nije pokazao — korisno za hvatanje tipfelera i neočekivanih API polja pri parsiranju umjesto kasnije u toku.

Navedite izvezenu shemu kako vaš kod očekuje, i po želji dodajte export type X = z.infer<typeof X> odmah ispod nje, tako da validacijski kod u vrijeme izvođenja i tip u vrijeme kompajliranja dolaze iz istog izvora i nikad se ne mogu tiho razdvojiti.

Sve se izvršava lokalno u vašem pregledniku. JSON koji zalijepite — odgovore API-ja koje sadrže tokene, korisnički zapise, interne terete — parsira se i tipizira potpuno na vašoj uređaju i nikad se ne prenose nigdje. Zalijepite uzorak, kopirajte generiranu shemu u svoj projekt i počnite validirati ono što parsirali.

FAQ

Kako se odlučuje između .optional() i .nullable()?
Ključ koji nedostaje u nekim uzorcima niza je uvijek .optional() — nema drugog načina da se dopusti nedostajući ključ. Ključ koji je prisutan ali ponekad null je dvoznačan, pa opcija „Rukovanje null-om“ odlučuje: nullable ga precizno tipizira s .nullable(), optional tretira null vrijednost kao nedostajuću.
Kako se rukuje ugniježđenim objektima?
Prema zadanoj postavci, ugniježđeni objekt se tipizira inline, upravo gdje se pojavljuje. Uključite „Podijeli ugniježđene objekte“ da biste dali svakom ugniježđenom obliku svoj export const ...Schema i identični oblici automatski dijele jednu shemu umjesto njene dupliciranja.
Kada polje postaje z.enum() umjesto z.string()?
Kada je „Otkri enumeracije“ uključeno i polje ponavlja mali skup različitih vrijednosti niza — od 2 do 5 — kroz niz uzoraka, kao što je stupac statusa ili kategorije. Polje samo s jedinstvenim vrijednostima ili previše različitih ostaje z.string().
Što čini opcija „Stroga objekca“?
Dodaje .strict() svakom generiranom z.object(), pa parsiranje neće uspjeti ako ulaz sadrži ključ koji uzorak nikada nije pokazao — korisno za hvatanje tipfelera ili neodgovarajućih API dodavanja umjesto njihova tihog ignoriranja.
Je li moj JSON prenesen negdje?
Ne. Shema se generira potpuno u vašem pregledniku — vaš JSON nikad ne napušta vašu uređaj.