Categoría: Desarrollo
Convertidor de JSON a esquema Zod
Genera un esquema Zod a partir de un JSON de muestra sin subir tus datos
Pega JSON y genera un esquema Zod en tu navegador. Infiere objetos, arrays, cadenas, números, booleanos, nulos y campos opcionales, y copia una salida lista para TypeScript. No se sube nada.
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>;
Se infiere solo a partir de esta muestra: puede ver que un campo contenía una cadena, no que esa cadena deba ser un correo, tener una longitud mínima o coincidir con uno de varios valores permitidos. Trata el resultado como un punto de partida y ajusta tú las reglas.
Todo lo de esta página se procesa en tu navegador. No se sube nada.
Todo lo de esta página se procesa en tu navegador. No se sube nada.
Para qué sirve
Esta herramienta lee una muestra JSON en local y redacta el esquema de objeto Zod correspondiente, incluidos objetos anidados, arrays y uniones. Cuando un array contiene objetos que no coinciden —un elemento tiene un campo `pinned` y el siguiente no— la clave se marca como `.optional()` en lugar de descartarse en silencio, porque justo esa discrepancia suele ser lo que más te interesaba ver. Un valor que a veces era nulo se convierte en `.nullable()` en vez de en una unión de dos miembros. Lo que no puede hacer es inventar reglas que nunca vio: los datos de muestra enseñan que un campo contenía una cadena, no que esa cadena tenga que ser un correo, quedarse por debajo de 80 caracteres o ser uno de tres valores permitidos. La salida es un andamiaje que hay que apretar, no un contrato terminado.
Cómo se usa
- Pega una muestra JSON representativa: cuanta más variación cubra, mejor será la inferencia.
- Ponle nombre al esquema y elige si quieres incluir el import de zod y el tipo inferido.
- Copia el código generado y ajusta después las reglas de campo que tu muestra no podía mostrar.
Privacidad
Esta herramienta funciona íntegramente en tu navegador. Lo que introduces nunca se sube, se guarda ni se comparte: al cerrar la pestaña desaparece.
Preguntas frecuentes
- ¿Se sube mi JSON?
- No. El JSON se analiza y el esquema se genera enteramente en la pestaña del navegador; ni la entrada ni la salida se envían a un servidor, se registran ni se almacenan.
- ¿Cómo de precisa es la validación inferida?
- Tan precisa como tu muestra. Captura la estructura y los tipos con fidelidad, pero no puede conocer restricciones que la estructura no expresa: formatos, rangos, enumeraciones o qué campos son realmente obligatorios en producción. Revisa cada campo antes de confiar en él.
- ¿Admite arrays y campos opcionales?
- Sí. Los arrays se convierten en z.array(...), y cuando los objetos de un array tienen claves distintas, las que no aparecen en todos se marcan como .optional(). Un campo que a veces era nulo pasa a ser .nullable().
- ¿Puedo usar la salida en TypeScript?
- Sí. El archivo generado exporta el esquema y, si dejas activada la opción, un alias de tipo `z.infer`, así que obtienes un validador y su tipo estático desde la misma fuente.