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.
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
- Incolla un campione JSON rappresentativo nell'editor di sinistra.
- Apri le impostazioni e imposta il nome dello schema root se desideri qualcosa di diverso dallo schema.
- 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.