Vai al contenuto

Trasformatore di schema da JSON a Zod — Numio

Genera uno schema Zod da un esempio JSON con la libreria json-to-zod. Ogni valore viene mappato a z.string(), z.number(), z.boolean(), z.null() o z.object(); gli array vuoti diventano z.array(z.unknown()).

Redazione di un validatore di runtime per una risposta API di cui hai solo un esempio.

JSON

Zod Schema

Quando usarlo

  • Redazione di un validatore di runtime per una risposta API di cui hai solo un esempio.
  • Aggiunta della convalida Zod a un modulo o a un caricatore di configurazione senza scrivere manualmente lo schema.

Come si usa

  1. Incolla un campione JSON rappresentativo nell'editor di sinistra.
  2. Apri le impostazioni e imposta il nome dello schema root se desideri qualcosa di diverso dallo schema.
  3. Copia il codice, quindi rafforzalo: aggiungi .optional(), .email(), .min() e regole simili dalle tue specifiche reali.

Campione JSON

{
  "id": 42,
  "email": "ada@example.com",
  "roles": ["admin", "editor"],
  "profile": { "nickname": null, "verified": true },
  "tags": []
}

Schema Zod (TypeScript)

import { z } from "zod"

export const schema = z.object({
  id: z.number(),
  email: z.string(),
  roles: z.array(z.string()),
  profile: z.object({ nickname: z.null(), verified: z.boolean() }),
  tags: z.array(z.unknown()),
})

Dettagli e limiti

La generazione viene eseguita nel browser; la libreria viene caricata su richiesta.

I tipi provengono da un campione. null diventa solo z.null(), non .nullable() e le chiavi mancanti non vengono mai contrassegnate come opzionali.

Gli array con forme di elementi diverse diventano z.union([...]) di ogni forma, che potrebbe richiedere l'unione manuale.

Formati come email, data o UUID non vengono rilevati; sono tutti z.string().

FAQ

Posso convertire un array JSON alla radice?

Sì. Un array root diventa z.array(...). Se i suoi oggetti hanno chiavi diverse, ogni oggetto distinto diventa membro di una z.union.

Come vengono digitati i valori nulli?

Come z.null(), che accetta solo null. Se il campo può contenere anche una stringa, cambiala in z.string().nullable().

Aggiunge .optional() per i campi mancanti?

No. È necessaria ogni chiave del campione. Contrassegna tu stesso i campi facoltativi.

Specifiche e riferimenti