Skip to content

Convertitore da JSON a schema Zod

Incolla JSON e ottieni uno schema Zod pronto all'uso all'istante, 100% online nel browser. Tipizzazione z.number().int() corretta, .optional() e .nullable(), più un tipo z.infer. Gratis.

Niente tracciamento Funziona nel browser Gratuito
Opzioni
0 caratteri
Output Zod
0 righe
Output verificato rispetto alla semantica di parsing di Zod v3 e v4 su payload API reali. — Go Tools Team · Jul 2, 2026

Cos'è uno schema Zod?

Uno schema Zod è una descrizione della forma di un valore, pensata prima di tutto per TypeScript, che valida i dati a runtime e ne deduce un tipo statico in fase di compilazione. Generarne uno da un campione JSON significa non scrivere mai a mano il boilerplate di validazione per le risposte API, i moduli o i file di configurazione. Questo generatore di schemi Zod deduce i tipi corretti, contrassegna le chiavi assenti come .optional(), i valori null come .nullable(), e ti fornisce un tipo z.infer — tutto al 100% nel tuo browser.

Esempi

Risposta API

{"id":101,"name":"Ada Lovelace","email":"ada@example.com","active":true,"roles":["admin","user"]}
import { z } from "zod";

export const RootSchema = z.object({
  id: z.number().int(),
  name: z.string(),
  email: z.string(),
  active: z.boolean(),
  roles: z.array(z.string()),
});

export type Root = z.infer<typeof RootSchema>;

Un tipico payload REST diventa uno schema Zod pronto all'uso. I numeri interi vengono dedotti come z.number().int(), e l'array roles diventa z.array(z.string()). Un tipo z.infer è incluso gratuitamente.

Oggetto annidato

{"repo":"zod","owner":{"login":"colinhacks","id":100}}
import { z } from "zod";

export const OwnerSchema = z.object({
  login: z.string(),
  id: z.number().int(),
});

export const RootSchema = z.object({
  repo: z.string(),
  owner: OwnerSchema,
});

export type Root = z.infer<typeof RootSchema>;

Gli oggetti annidati diventano il proprio schema con nome (OwnerSchema) e vengono referenziati per campo. Gli schemi figli sono dichiarati prima del genitore che li usa, e le forme identiche vengono dichiarate una sola volta e riutilizzate.

Array di oggetti (campo opzionale)

{"users":[{"id":1,"nick":"x"},{"id":2}]}
import { z } from "zod";

export const UserSchema = z.object({
  id: z.number().int(),
  nick: z.string().optional(),
});

export const RootSchema = z.object({
  users: z.array(UserSchema),
});

export type Root = z.infer<typeof RootSchema>;

Gli array di oggetti si uniscono in un unico schema per l'elemento. Una chiave assente in alcuni elementi diventa .optional(), così l'analisi riesce comunque quando manca.

Campo nullable e unificazione dei numeri

{"items":[{"sku":"A1","discount":0.1},{"sku":"A2","discount":null}]}
import { z } from "zod";

export const ItemSchema = z.object({
  sku: z.string(),
  discount: z.number().nullable(),
});

export const RootSchema = z.object({
  items: z.array(ItemSchema),
});

export type Root = z.infer<typeof RootSchema>;

Un campo che è null in alcuni campioni ma tipizzato in altri diventa .nullable(). Poiché 0.1 ha la virgola decimale, il numero si unifica in z.number() anziché in z.number().int().

Come convertire JSON in Zod

  1. 1

    Incolla il tuo JSON

    Inserisci un oggetto JSON, un array o una risposta API nel campo di input. La conversione parte istantaneamente.

  2. 2

    Regola l'output

    Rinomina lo schema radice e attiva o meno la riga import, il tipo z.infer o la parola chiave export per adattarlo allo stile del tuo progetto.

  3. 3

    Copia o scarica

    Prendi lo schema Zod generato con un clic e incollalo direttamente nel tuo livello di validazione.

Common Use Cases

Validare le risposte API
Trasforma una risposta di esempio REST o GraphQL in uno schema Zod e analizzala al confine del fetch, così i dati mal formati falliscono subito con un errore chiaro invece di filtrare attraverso la tua app.
Moduli e input tipizzati
Genera uno schema per l'input di un modulo o di una query e riutilizza il tipo z.infer nella tua interfaccia e nei tuoi handler per una sicurezza dei tipi end-to-end.
Schemi tRPC e strumenti IA
Avvia gli schemi di input e output delle procedure tRPC o degli strumenti IA a output strutturato a partire da un payload di esempio invece di scriverli a mano.

Come funziona la conversione

Inferenza strutturale
Ogni oggetto diventa uno schema con nome; le forme identiche vengono dichiarate una sola volta e riutilizzate. Gli array di oggetti si uniscono chiave per chiave, e le chiavi assenti in alcuni elementi diventano .optional().
Corrispondenza dei tipi corretta
Gli interi vengono mappati su z.number().int() e i decimali su z.number(). Le stringhe, i booleani e i null vengono mappati su z.string(), z.boolean() e z.null(); un array di primitivi misti diventa un z.union().
Tipi TypeScript inclusi
Viene emesso un alias di tipo z.infer per lo schema radice, così lo schema resta l'unica fonte di verità e i tuoi tipi non divergono mai dalla tua validazione.
100% lato client
Il parsing e la generazione girano nel tuo browser senza chiamate di rete, così i tuoi dati restano privati.

Consigli per schemi Zod puliti

Dai un nome allo schema radice
Imposta un nome radice significativo come User o ApiResponse invece del Root predefinito per un codice leggibile e autodocumentato.
Affina z.unknown() e le union
Gli array vuoti o misti producono z.unknown() o un z.union() ampio. Incolla un campione più ricco e rappresentativo così lo strumento deduce tipi precisi, poi restringi tutto ciò che resta ambiguo.
Valida al confine
Chiama safeParse() dove entrano dati non attendibili — risposte API, input dei moduli, webhook — così i dati errati vengono intercettati prima di raggiungere la logica della tua applicazione.

Domande frequenti

Come converto JSON in uno schema Zod?
Incolla il tuo JSON nel campo a sinistra. Il convertitore lo analizza istantaneamente nel browser e genera sulla destra uno schema Zod, insieme a un alias di tipo z.infer. Clicca Copia per prenderlo — nessun upload, nessun account, nessuna attesa.
Qual è la differenza tra JSON a Zod e JSON Schema a Zod?
Questo strumento prende un valore JSON di esempio — una risposta API o un oggetto — e deduce uno schema Zod dalla sua forma. JSON Schema a Zod è un compito diverso: converte un documento JSON Schema esistente in Zod. Se hai dati grezzi, usa questo strumento. Se hai già un file JSON Schema, converti quello.
Come ottengo un tipo TypeScript dallo schema?
Ogni risultato include un alias di tipo z.infer, così ottieni un tipo Root completamente tipizzato senza scriverlo a mano. Mantieni lo schema come unica fonte di verità e lascia che TypeScript ne derivi il tipo, così i due non divergono mai. Puoi disattivare la riga z.infer nelle Opzioni se vuoi solo lo schema.
Come vengono gestiti i campi opzionali e null?
Quando una chiave compare in alcuni elementi di un array ma non in altri, il suo campo viene contrassegnato come .optional(). Un campo che è null in alcuni campioni e tipizzato in altri diventa .nullable(). Un campo che è sempre null diventa z.null(). Zod tratta optional e nullable in modo indipendente, quindi lo schema rispecchia come variano realmente i tuoi dati.
Quale tipo numerico genera?
I numeri interi vengono mappati su z.number().int(); qualsiasi valore scritto con la virgola decimale o un esponente viene mappato su z.number(). Se un campo mescola interi e decimali tra i campioni, si unifica in z.number() così la validazione non rifiuta mai un valore legittimo.
L'output funziona con Zod 3 e Zod 4?
Sì. Il codice generato usa il sottoinsieme comune e stabile — z.object, z.string, z.number, z.array, z.union, .int, .optional, .nullable e z.infer — che si comporta allo stesso modo in Zod 3 e Zod 4. Assicurati solo che il pacchetto zod sia installato nel tuo progetto.
Come valido i dati con lo schema generato?
Importa lo schema e chiama RootSchema.parse(data) per sollevare un'eccezione su un input non valido, oppure RootSchema.safeParse(data) per ottenere un risultato tipizzato di successo o errore senza sollevare eccezioni. È ideale ai confini di fiducia come le risposte API, l'input dei moduli e la configurazione dell'ambiente.
Come vengono gestiti gli array e i tipi misti?
Un array di un solo tipo diventa z.array di quel tipo. Un array di oggetti si unisce chiave per chiave in un unico schema per l'elemento. Un array che mescola tipi primitivi diventa un z.union, e qualsiasi cosa più ambigua ripiega su z.unknown così puoi affinarla a partire da un campione più ricco.
I miei dati JSON sono privati e al sicuro?
Sì. La conversione avviene al 100% nel tuo browser con JavaScript. Il tuo JSON — inclusi token, ID o dati dei clienti — non lascia mai la pagina e non viene mai inviato a un server.
Lo strumento è gratuito? Serve un account?
È completamente gratuito, senza registrazione, senza limiti e senza pubblicità che ingombra lo spazio di lavoro.

Strumenti correlati

Vedi tutti gli strumenti →