Convertir JSON a un esquema Zod
Genera un esquema Zod a partir de una muestra JSON con la biblioteca json-to-zod. Cada valor se asigna a z.string(), z.number(), z.boolean(), z.null() o un z.object() anidado; los arrays vacíos pasan a z.array(z.unknown()).
Esbozar un validador en tiempo de ejecución para una respuesta de API de la que solo tienes un ejemplo.
Cuándo usarla
- Esbozar un validador en tiempo de ejecución para una respuesta de API de la que solo tienes un ejemplo.
- Añadir validación con Zod a un formulario o a un cargador de configuración sin escribir el esquema a mano.
Cómo usarla
- Pega una muestra JSON representativa en el editor izquierdo.
- Abre la configuración y define Root Schema Name si quieres un nombre distinto de schema.
- Copia el código y ajústalo: añade .optional(), .email(), .min() y reglas similares según tu especificación real.
Muestra JSON
{
"id": 42,
"email": "ada@example.com",
"roles": ["admin", "editor"],
"profile": { "nickname": null, "verified": true },
"tags": []
}Esquema 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()),
})Detalles y limitaciones
La generación se ejecuta en el navegador; la biblioteca se carga bajo demanda.
Los tipos salen de una sola muestra. null pasa solo a z.null(), no a .nullable(), y las claves ausentes nunca se marcan como opcionales.
Los arrays con elementos de formas distintas pasan a z.union([...]) con cada forma, que puede requerir una fusión manual.
No se detectan formatos como email, fecha o UUID; todos son z.string().
FAQ
¿Puedo convertir un array JSON en la raíz?
Sí. Un array raíz pasa a z.array(...). Si sus objetos tienen claves distintas, cada objeto distinto pasa a ser un miembro de un z.union.
¿Cómo se tipan los valores null?
Como z.null(), que solo acepta null. Si el campo también puede contener una cadena, cámbialo a z.string().nullable().
¿Añade .optional() a los campos ausentes?
No. Todas las claves de la muestra son obligatorias. Marca tú mismo los campos opcionales.