Preskočiť na obsah

JSON na Zod schéma

Vytvorte validačnú schému Zod a TypeScript typy z JSON vzorky, s detekciou formátov a enumerácií.

Vstup
Výstup

JSON na Zod schéma

Vložte JSON vzorku — odpoveď API, konfiguračný súbor, riadok databázy — a získate hotovú Zod schému v TypeScript. Typy sa odvodzujú pre každé pole: primitíva sa mapujú na z.string(), z.number() a z.boolean(), polia obsahujúce zoznam majú odvodený typ prvku a hodnota, ktorá sa líši v rámci výskytov, sa stáva z.union(). Reťazec, ktorý vyzerá ako e-mailová adresa, URL, UUID alebo dátum ISO, dostane zodpovedajúci validátor — .email(), .url(), .uuid(), .date() alebo .datetime() — namiesto holého z.string().

Preložte mu pole objektov rovnakého tvaru, napríklad riadky z koncového bodu zoznamu, a generátor zlúči každý prvok pred typizáciou poľa: kľúč chýbajúci v niektorých riadkoch sa stáva .optional(), kľúč, ktorý je niekedy null, sa stáva .nullable() alebo .optional() v závislosti od zvoleného nastavenia a pole, ktoré opakuje malú skupinu hodnôt — stĺpec stavu alebo roly — sa stáva správnym z.enum() namiesto otvoreného reťazca. Zapnite „Rozdeliť vnorené objekty“, aby ste vyňali každý vnorený objekt do vlastného pomenovaného exportu namiesto jedného hlboko vnoreného literálu, pričom identické tvary automaticky zdieľajú jednu schému. Zapnite „Striktné objekty“, aby ste zamietli akýkoľvek kľúč, ktorý vzorka nikdy neukázala, a zachytili ste opravy a neočakávané polia API pri parsovaní namiesto nižšie v toku.

Pomenujte exportovanú schému podľa toho, ako to očakáva váš kód, a voliteľne pridajte export type X = z.infer<typeof X> práve pod ňou, aby runtime validátor a typ v čase kompilácie pochádzali z rovnakého zdroja a nikdy sa nemohli ticho odchádzať.

Všetko prebieha lokálne vo vašom prehliadači. JSON, ktorý vložíte — odpovede API obsahujúce tokeny, záznamy používateľov, interné záťaže — sa parsuje a typuje úplne na vašom zariadení a nikdy sa nikam neukladá. Vložte vzorku, skopírujte vygenerovanú schému do svojho projektu a začnite validovať, čo parsujete.

Časté otázky

Ako sa rozhodne medzi .optional() a .nullable()?
Kľúč chýbajúci v niektorých vzorkách poľa je vždy .optional() — neexistuje iný spôsob, ako povoliť neexistenciu kľúča. Kľúč, ktorý je prítomný, ale niekedy null, je nejednoznačný, takže možnosť „Spracovanie null“ rozhoduje: nullable to typuje presne s .nullable(), optional považuje hodnotu null za rovnakú ako chýbajúcu.
Ako sa spracovávajú vnorené objekty?
Predvolene sa vnorený objekt typuje inline, presne tam, kde sa objavuje. Zapnite „Rozdeliť vnorené objekty“, aby ste dali každému vnoreného tvaru vlastný export const ...Schema a identické tvary automaticky zdieľajú jednu schému namiesto jej duplikácie.
Kedy sa pole zmení z.enum() namiesto z.string()?
Keď je zapnutá položka „Zistiť enumerácie“ a pole opakuje malú skupinu zreteľných hodnôt reťazca — 2 až 5 — cez pole vzoriek, ako napríklad stĺpec stavu alebo kategórie. Pole s iba jedinečnými hodnotami alebo príliš mnohými odlišnými zostáva z.string().
Čo robí možnosť „Striktné objekty“?
Añade .strict() každému generovanému z.object(), takže parsovanie zlyha, ak vstup obsahuje kľúč, ktorý vzorka nikdy neukázala — užitočné na zachytenie preklepov alebo nehlásených dodatkov API namiesto ich tichého ignorovania.
Je môj JSON niekde nahraný?
Nie. Schéma sa generuje úplne vo vašom prehliadači — váš JSON nikdy neopúšťa vaše zariadenie.