UTILS.
100% nel browser
🛡️

Da JSON a schema Zod

Incolla un valore JSON di esempio e genera uno schema Zod più un tipo TypeScript inferito, così una sola forma valida a runtime e i tipi in compilazione.

output

Informazioni su questo strumento

Lo strumento Da JSON a schema Zod trasforma un JSON di esempio incollato in uno schema Zod pronto all'uso e nel tipo TypeScript corrispondente. Zod è la libreria di validazione dominante per TypeScript, e scrivere a mano alberi z.object per payload API reali è lento e soggetto a errori. Questo convertitore analizza il tuo JSON con JSON.parse, percorre il valore ricorsivamente ed emette Zod idiomatico: le stringhe diventano z.string(), gli interi z.number().int(), gli altri numeri z.number(), i booleani z.boolean(), null z.null() e gli oggetti annidati i propri schemi z.object({...}) nominati.

Tutto avviene localmente nel tuo browser — il tuo JSON viene analizzato nella pagina e mai caricato, quindi i payload sensibili restano sul tuo dispositivo. Gli array inferiscono il tipo degli elementi facendo un deep-merge di ogni elemento, così un array di oggetti con chiavi leggermente diverse produce uno schema in cui le chiavi mancanti in alcuni elementi sono contrassegnate come .optional(). Le stringhe data-ora ISO-8601 vengono riconosciute ed emesse come z.string().datetime(). Le chiavi di oggetto che non sono identificatori validi vengono virgolettate in sicurezza.

L'output è un modulo completo: una const esportata per ogni schema di oggetto (i figli definiti prima dei genitori che li referenziano) seguita da export type Root = z.infer<typeof Root>, così ottieni i tipi in compilazione gratuitamente. Usa la casella del nome radice per rinominare lo schema di primo livello e l'interruttore delle chiavi mancanti per trattare le chiavi assenti come .optional() (predefinito) o .nullable(). Copia il risultato o scaricalo come file .ts.

Domande frequenti

Come vengono mappati i tipi JSON su Zod?
string in z.string(), una stringa data-ora ISO in z.string().datetime(), gli interi in z.number().int(), gli altri numeri in z.number(), i booleani in z.boolean(), null in z.null(), gli array in z.array(...) e gli oggetti in uno z.object({...}) nominato. Gli array vuoti diventano z.array(z.unknown()).
Come vengono gestiti i campi opzionali o nullable?
Quando gli elementi di un array o i fratelli uniti non hanno una chiave, quella chiave è contrassegnata come .optional(). Un valore visto come null diventa z.null() o aggiunge .nullable(). L'interruttore delle chiavi mancanti permette di emettere .optional() (predefinito) o .nullable() per le chiavi assenti in alcuni campioni.
Mi fornisce anche un tipo TypeScript?
Sì. Dopo lo schema emette export type Root = z.infer<typeof Root>, così il tipo statico inferito deriva dallo schema stesso — un'unica fonte di verità sia per la validazione a runtime sia per i tipi in compilazione.
Il mio JSON viene caricato da qualche parte?
No. L'analisi e la generazione del codice avvengono interamente nel tuo browser con JSON.parse e semplice JavaScript. Nulla viene inviato a un server, quindi puoi incollare in sicurezza risposte API private.

Altri strumenti