Přeskočit na obsah

JSON na Zod schéma

Vytvořte validační schéma Zod a TypeScript typy z JSON vzorku, s rozpoznáváním formátů a výčtů.

Vstup
Výstup

JSON na Zod schéma

Vložte JSON vzorek — odpověď API, konfigurační soubor, řádek databáze — a získejte připravenou Zod schéma v TypeScript. Typy se odvozují pro každé pole: primitivy se mapují na z.string(), z.number() a z.boolean(), pole obsahující seznam mají odvodený typ prvku a hodnota, která se liší mezi výskyty, se stává z.union(). Řetězec, který vypadá jako e-mailová adresa, URL, UUID nebo datum ISO, získá odpovídající validátor — .email(), .url(), .uuid(), .date() nebo .datetime() — místo голého z.string().

Podejte mu pole objektů stejného tvaru, například řádky z koncového bodu seznamu, a generátor sloučí každý prvek před typizací pole: klíč chybějící v některých řádcích se stane .optional(), klíč, který je někdy null, se stane .nullable() nebo .optional() v závislosti na vybraném nastavení a pole, které opakuje malou sadu hodnot — sloupec stavu nebo role — se stane správným z.enum() místo otevřeného řetězce. Zapněte „Rozdělit vnořené objekty“, abyste vytáhli každý vnořený objekt do vlastního pojmenovaného exportu místo jednoho hluboce vnořeného literálu, kde si identické tvary automaticky sdílejí jednu schéma. Zapněte „Přísné objekty“, abyste odmítli jakýkoli klíč, který vzorek nikdy neukázal, a chytili jste překlepy a neočekávaná pole API při parsování místo později v toku.

Pojmenujte exportovanou schéma tak, jak to očekává váš kód, a volitelně přidejte export type X = z.infer<typeof X> přímo pod ní, aby běhový validátor a typ v čase kompilace pocházely ze stejného zdroje a nikdy se nemohly tiše rozejít.

Vše běží lokálně ve vašem prohlížeči. JSON, který vložíte — odpovědi API obsahující tokeny, záznamy uživatelů, interní datové toky — se parsuje a typuje úplně na vašem zařízení a nikdy se nikam nenahrává. Vložte vzorek, zkopírujte vygenerovanou schéma do svého projektu a začněte ověřovat, co parsujete.

Časté dotazy

Jak se rozhodne mezi .optional() a .nullable()?
Klíč chybějící v některých vzorcích pole je vždy .optional() — neexistuje jiný způsob, jak povolit chybějící klíč. Klíč, který je přítomen, ale někdy null, je nejednoznačný, takže možnost „Zpracování null“ rozhoduje: nullable to typuje přesně s .nullable(), optional považuje hodnotu null za stejnou jako chybějící.
Jak se zpracovávají vnořené objekty?
Ve výchozím nastavení se vnořený objekt typuje inline, právě tam, kde se objevuje. Zapněte „Rozdělit vnořené objekty“, abyste dali každému vnořenému tvaru jeho vlastní export const ...Schema a identické tvary si automaticky sdílejí jednu schéma místo jejího duplikování.
Kdy se pole změní z.enum() místo z.string()?
Když je zapnuto „Zjistit výčty“ a pole opakuje malou sadu odlišných řetězcových hodnot — 2 až 5 — v poli vzorků, jako je sloupec stavu nebo kategorie. Pole pouze s jedinečnými hodnotami nebo příliš mnoha odlišnými zůstane z.string().
Co dělá možnost „Přísné objekty“?
Přidá .strict() do každého generovaného z.object(), takže parsování selže, pokud vstup obsahuje klíč, který vzorek nikdy neukázal — užitečné pro chycení překlepů nebo nehlášených přidání API místo jejich tichého ignorování.
Je můj JSON někde nahrán?
Ne. Schéma se generuje zcela ve vašem prohlížeči — váš JSON nikdy neopustí vaše zařízení.