Categoria: Sviluppo

Convertitore da JSON a schema Zod

Idea internaManca uno strumento?

Genera uno schema Zod da un JSON di esempio senza caricare i tuoi dati

Incolla del JSON e genera uno schema Zod nel browser. Inferisce oggetti, array, stringhe, numeri, booleani, valori nulli e campi facoltativi, e copi un output pronto per TypeScript. Non viene caricato nulla.

Schema Zod
import { z } from "zod";

export const userSchema = z.object({
  id: z.number(),
  name: z.string(),
  isActive: z.boolean(),
  score: z.null(),
  tags: z.array(z.string()),
  address: z.object({
    city: z.string(),
    country: z.string(),
  }),
  posts: z.array(z.object({
    slug: z.string(),
    views: z.number(),
    pinned: z.boolean().optional(),
  })),
});

export type User = z.infer<typeof userSchema>;

Inferito solo da questo campione: vede che un campo conteneva una stringa, non che quella stringa debba essere un'email, avere una lunghezza minima o corrispondere a uno di pochi valori ammessi. Considera l'output un punto di partenza e stringi tu le regole.

Tutto ciò che c'è in questa pagina viene elaborato nel tuo browser. Niente viene caricato.

Tutto ciò che c'è in questa pagina viene elaborato nel tuo browser. Niente viene caricato.

A cosa serve

Questo strumento legge un campione JSON in locale e redige lo schema di oggetto Zod corrispondente, inclusi oggetti annidati, array e unioni. Quando un array contiene oggetti che non coincidono — un elemento ha il campo `pinned` e il successivo no — la chiave viene contrassegnata `.optional()` invece di essere scartata in silenzio, perché di solito è proprio quella discrepanza ciò che avevi più bisogno di notare. Un valore a volte nullo diventa `.nullable()` anziché un'unione a due membri. Ciò che non può fare è inventare regole che non ha mai visto: i dati di esempio mostrano che un campo conteneva una stringa, non che quella stringa debba essere un'email, restare sotto gli 80 caratteri o essere uno di tre valori ammessi. L'output è un'impalcatura da stringere, non un contratto finito.

Come si usa

  1. Incolla un campione JSON rappresentativo: più variazioni copre, migliore è l'inferenza.
  2. Dai un nome allo schema e scegli se includere l'import di zod e il tipo inferito.
  3. Copia il codice generato e poi stringi le regole dei campi che il tuo campione non poteva mostrare.

Privacy

Questo strumento funziona interamente nel tuo browser. Quello che inserisci non viene mai caricato, salvato o condiviso: chiudendo la scheda sparisce.

Domande frequenti

Il mio JSON viene caricato?
No. Il JSON viene analizzato e lo schema generato interamente nella scheda del browser; né l'input né l'output vengono inviati a un server, registrati o memorizzati.
Quanto è accurata la validazione inferita?
Tanto quanto il tuo campione. Coglie struttura e tipi con fedeltà, ma non può conoscere vincoli che la struttura non esprime: formati, intervalli, enumerazioni o quali campi siano davvero obbligatori in produzione. Rivedi ogni campo prima di farci affidamento.
Gestisce array e campi facoltativi?
Sì. Gli array diventano z.array(...) e, quando gli oggetti di un array hanno chiavi diverse, quelle non presenti ovunque vengono contrassegnate .optional(). Un campo a volte nullo diventa .nullable().
Posso usare l'output in TypeScript?
Sì. Il file generato esporta lo schema e, se lasci attiva l'opzione, un alias di tipo `z.infer`: ottieni un validatore e il tipo statico corrispondente dalla stessa fonte.