Ugrás a tartalomhoz
100% helyi

JSON Zod sémára

Hozz létre Zod validációs sémákat és TypeScript típusokat JSON mintából, formátum és enum felismeréssel.

Bemenet
Kimenet

JSON Zod sémára

Illessz be egy JSON mintát — API-választ, konfigurációs fájlt, adatbázis sorokat — és kapj egy azonnal használható Zod sémát TypeScript-ben. A típusok mezőnként kerülnek levezetésre: primitívek a z.string(), z.number() és z.boolean() függvényre képeződnek, a tömbök az levezetett elemtípussal rendelkeznek, és az értékek közötti különbségek z.union() válnak. Az e-mail címnek, URL-nek, UUID-nek vagy ISO dátumnak tűnő sztringek a megfelelő validátort kapják — .email(), .url(), .uuid(), .date() vagy .datetime() — egy egyszerű z.string() helyett.

Adj neki azonos alakú objektumok tömbét, például egy listázási végpont sorait, és a generátor összevonja az egyes elemeket a mező tipizálása előtt: egy néhány sorból hiányzó kulcs .optional() lesz, az egyes helyeken null értékű kulcs a beállítástól függően .nullable() vagy .optional() lesz, és az értékek kis halmazát ismétlő mező — egy státusz vagy szereposzlop — egy megfelelő z.enum() lesz egy nyitott sztring helyett. Kapcsold be a „Beágyazott objektumok felosztása” lehetőséget az egyes beágyazott objektumok saját elnevezett exportba való kinyeréséhez az egy mélyen beágyazott literál helyett, ahol az azonos alakok automatikusan megosztanak egy sémát. Kapcsold be a „Szigorú objektumok” lehetőséget az olyan kulcsok elutasításához, amelyeket a minta soha nem mutatott — hasznos a gépelési hibák és váratlan API-mezők elkapásához az elemzéskor ahelyett, hogy később a folyamat során derülnének ki.

Nevezd meg az exportált sémát, ahogy a kódod elvárja, és opcionálisan add hozzá az export type X = z.infer<typeof X> közvetlenül alá, így a futásidejű validátor és a fordításidejű típus ugyanabból a forrásból származik és sosem térhetnek el csendesen.

Minden helyileg fut a böngészödben. A beillesztett JSON — API-válaszok tokenekkel, felhasználói nyilvántartások, belső adattartalmak — teljes egészében az eszközödön parseltörik és tipizálódnak, és soha nem kerülnek feltöltésre. Illessz be egy mintát, másold a generált sémát a projektbe, és kezdj el validálni az elemzetteket.

Gyakori kérdések

Hogyan választ a .optional() és .nullable() között?
Az egyes tömbmintákból hiányzó kulcs mindig .optional() — nincs más módja a hiányzó kulcs megengedésének. Az olyan kulcs, amely jelen van, de egyes helyeken null, kétértelmű, így a „Null kezelése” beállítás dönti el: a nullable pontosan z.nullable() típusúra, az optional pedig a null értéket a hiányzóként kezeli.
Hogyan kezelik a beágyazott objektumokat?
Alapértelmezésben a beágyazott objektum beágyazottan tipizálódik, pontosan ott, ahol megjelenik. Kapcsold be a „Beágyazott objektumok felosztása” lehetőséget, hogy az egyes beágyazott alakoknak saját export const ...Schema legyen, és az azonos alakok automatikusan megosztanak egy sémát az ismétlés helyett.
Mikor válik egy mező z.enum() helyett z.string()-é?
Ha az „Enumerációk felismerése” bekapcsolt, és egy mező egy kis készlet különálló sztringértéket — 2-5-öt — ismétел el a minták tömbén keresztül, például egy státusz vagy kategória oszlopon. Csak egyedi értékeket vagy túl sok különbözőt tartalmazó mező z.string() marad.
Mit csinál a „Szigorú objektumok” beállítás?
Minden generált z.object()-hez .strict() függvényt ad hozzá, így az elemzés sikertelen lesz, ha a bemenet olyan kulcsot tartalmaz, amelyet a minta soha nem mutatott — hasznos a gépelési hibák vagy be nem jelentett API-bővítések elkapásához a csendben történő figyelmen kívül hagyás helyett.
Feltöltésre kerül a JSON valamerre?
Nem. A séma teljes egészében a böngészödben jön létre — a JSON soha nem hagyja el az eszközödet.