Preskoči na vsebino
100% lokalno

JSON v Zod shemo

Generirajte Zod validacijsko shemo in TypeScript tipe iz JSON vzorca s odkrivanjem formatov in naštevanja.

Vhod
Izhod

JSON v Zod shemo

Prilepite JSON vzorec — odgovor API-ja, konfiguracijsko datoteko, vrstico podatkovne baze — in dobijte pripravljeno Zod shemo v TypeScript-u. Vrste so izpeljane po polju: primitivi se preslikavajo v z.string(), z.number() in z.boolean(), polja s seznami imajo izpeljano vrsto elementa, in vrednost, ki se razlikuje med pojavitvami, postane z.union(). Niz, ki izgleda kot e-poštni naslov, URL, UUID ali datum ISO, dobi ustrezni validacijski kod — .email(), .url(), .uuid(), .date() ali .datetime() — namesto preprostega z.string().

Dajte mu niz objektov enake oblike, kot so vrstice iz končne točke seznama, in generator zlije vsak element pred tipizacijo polja: ključ, ki manjka v nekaterih vrstah, postane .optional(), ključ, ki je včasih nična vrednost, postane .nullable() ali .optional() odvisno od izbrane nastavitve, in polje, ki ponavlja majhen niz vrednosti — stolpec stanja ali vloge — postane pravilno z.enum() namesto odprtega niza. Vključite „Razdeli ugnezdene objekte“ za izločanje vsakega ugnezdenega objekta v svojo poimenovano izvozite namesto ene globoko ugnezdene dobesede, kjer enake oblike samodejno delijo eno shemo. Vključite „Strogi objekti“ za zavrnitev katerega koli ključa, ki ga vzorec ni nikoli pokazal — koristno za ujemanje tipkarskih napak in nepričakovanih polj API pri razčlembi namesto kasneje v toku.

Navedite izvoženo shemo, kot jo pričakuje vaša koda, in po želji dodajte export type X = z.infer<typeof X> takoj spodaj, tako da validacijski kod med izvajanjem in tip med prevajanjem izhajata iz istega vira in se nikoli ne moreta tiho razlikujeta.

Vse teče lokalno v vašem brskalniku. JSON, ki ga prilepite — odgovore API-ja z žetoni, uporabniške zapise, notranje bremene — se razčleni in tipizira povsem na vaši napravi in se nikoli ne naloži nikamor. Prilepite vzorec, kopirajte generirano shemo v svoj projekt in začnite preverjati, kaj razčlenjujete.

FAQ

Kako se odloči med .optional() in .nullable()?
Ključ, ki manjka v nekaterih vzorcih niza, je vedno .optional() — ni drugega načina, da bi dovolili manjkajoči ključ. Ključ, ki je prisoten vendar včasih nična vrednost, je dvoumen, zato nastavitev „Obravnava null“ odloči: nullable ga natančno tipizira z .nullable(), optional obravnava nihčno vrednost kot manjkajočo.
Kako se obravnavajo ugnezdeni objekti?
Privzeto se ugnezdeni objekt tipizira na mestu, točno tam, kjer se pojavi. Vključite „Razdeli ugnezdene objekte“ da biste dali vsaki ugnezdeni obliki svojo export const ...Schema in enake oblike samodejno delijo eno shemo namesto njene duplikacije.
Kdaj postane polje z.enum() namesto z.string()?
Ko je „Odkrij naštevanja“ vključeno in polje ponavlja majhen niz različnih vrednosti nizov — od 2 do 5 — preko niza vzorcev, kot je stolpec stanja ali kategorije. Polje samo z edinstvenimi vrednostmi ali premalo različnih ostane z.string().
Kaj naredi možnost „Strogi objekti“?
Doda .strict() vsaki generirani z.object(), zato razčlemba ne uspe, če vnos vsebuje ključ, ki ga vzorec ni nikoli pokazal — koristno za ujemanje tipkarskih napak ali nenapovedanih dodatkov API namesto njihovega tihega preziranja.
Je moj JSON prenesen nekje?
Ne. Shema se generira v celoti v vašem brskalniku — vaš JSON nikoli ne zapusti vaše naprave.