Convertidor de JSON a esquema Zod
Pega JSON y obtén un esquema Zod listo para usar al instante, 100% en tu navegador. Tipado z.number().int() correcto, .optional() y .nullable(), más un tipo z.infer. Gratis.
Opciones
¿Qué es un esquema Zod?
Un esquema Zod es una descripción de la forma de un valor, pensada primero para TypeScript, que valida los datos en tiempo de ejecución e infiere un tipo estático en tiempo de compilación. Generar uno a partir de una muestra JSON evita escribir a mano el código repetitivo de validación de respuestas de API, formularios o archivos de configuración. Este generador de esquemas Zod infiere los tipos correctos, marca las claves ausentes como .optional(), los valores null como .nullable(), y te entrega un tipo z.infer — todo al 100% en tu navegador.
Ejemplos
Respuesta de API
{"id":101,"name":"Ada Lovelace","email":"ada@example.com","active":true,"roles":["admin","user"]} import { z } from "zod";
export const RootSchema = z.object({
id: z.number().int(),
name: z.string(),
email: z.string(),
active: z.boolean(),
roles: z.array(z.string()),
});
export type Root = z.infer<typeof RootSchema>;
Un payload REST típico se convierte en un esquema Zod listo para usar. Los números enteros se infieren como z.number().int(), y el array roles se convierte en z.array(z.string()). Un tipo z.infer viene gratis.
Objeto anidado
{"repo":"zod","owner":{"login":"colinhacks","id":100}} import { z } from "zod";
export const OwnerSchema = z.object({
login: z.string(),
id: z.number().int(),
});
export const RootSchema = z.object({
repo: z.string(),
owner: OwnerSchema,
});
export type Root = z.infer<typeof RootSchema>;
Los objetos anidados se convierten en su propio esquema con nombre (OwnerSchema) y se referencian por campo. Los esquemas hijos se declaran antes del padre que los usa, y las formas idénticas se declaran una sola vez y se reutilizan.
Array de objetos (campo opcional)
{"users":[{"id":1,"nick":"x"},{"id":2}]} import { z } from "zod";
export const UserSchema = z.object({
id: z.number().int(),
nick: z.string().optional(),
});
export const RootSchema = z.object({
users: z.array(UserSchema),
});
export type Root = z.infer<typeof RootSchema>;
Los arrays de objetos se fusionan en un único esquema de elemento. Una clave ausente en algunos elementos se convierte en .optional(), así el análisis sigue teniendo éxito cuando falta.
Campo nullable y unificación de números
{"items":[{"sku":"A1","discount":0.1},{"sku":"A2","discount":null}]} import { z } from "zod";
export const ItemSchema = z.object({
sku: z.string(),
discount: z.number().nullable(),
});
export const RootSchema = z.object({
items: z.array(ItemSchema),
});
export type Root = z.infer<typeof RootSchema>;
Un campo que es null en algunas muestras pero está tipado en otras se convierte en .nullable(). Como 0.1 tiene punto decimal, el número se unifica en z.number() en lugar de z.number().int().
Cómo convertir JSON a Zod
- 1
Pega tu JSON
Suelta un objeto JSON, un array o una respuesta de API en el campo de entrada. La conversión empieza al instante.
- 2
Ajusta la salida
Renombra el esquema raíz y activa o no la línea import, el tipo z.infer o la palabra clave export para adaptarlo al estilo de tu proyecto.
- 3
Copia o descarga
Toma el esquema Zod generado con un clic y pégalo directamente en tu capa de validación.
Common Use Cases
- Validar respuestas de API
- Convierte una respuesta de ejemplo REST o GraphQL en un esquema Zod y analízala en la frontera del fetch, para que los datos mal formados fallen rápido con un error claro en lugar de filtrarse por tu aplicación.
- Formularios y entradas con tipos
- Genera un esquema para la entrada de un formulario o una consulta y reutiliza el tipo z.infer en tu interfaz y tus manejadores para una seguridad de tipos de extremo a extremo.
- Esquemas de tRPC y herramientas de IA
- Arranca los esquemas de entrada y salida de procedimientos tRPC o herramientas de IA con salida estructurada a partir de un payload de ejemplo en vez de escribirlos a mano.
Cómo funciona la conversión
- Inferencia estructural
- Cada objeto se convierte en un esquema con nombre; las formas idénticas se declaran una sola vez y se reutilizan. Los arrays de objetos se fusionan clave a clave, y las claves ausentes en algunos elementos se convierten en .optional().
- Correspondencia de tipos correcta
- Los enteros se asignan a z.number().int() y los decimales a z.number(). Las cadenas, los booleanos y los null se asignan a z.string(), z.boolean() y z.null(); un array de primitivos mezclados se convierte en un z.union().
- Tipos de TypeScript incluidos
- Se emite un alias de tipo z.infer para el esquema raíz, así el esquema sigue siendo la única fuente de verdad y tus tipos nunca se desincronizan de tu validación.
- 100% del lado del cliente
- El análisis y la generación se ejecutan en tu navegador sin llamadas de red, por lo que tus datos siguen siendo privados.
Consejos para esquemas Zod limpios
- Nombra tu esquema raíz
- Define un nombre raíz significativo como User o ApiResponse en lugar del Root predeterminado para un código legible y autodocumentado.
- Afina z.unknown() y las uniones
- Los arrays vacíos o mixtos producen z.unknown() o un z.union() amplio. Pega una muestra más rica y representativa para que la herramienta infiera tipos precisos, luego ajusta todo lo que siga siendo ambiguo.
- Valida en la frontera
- Llama a safeParse() donde entran datos no confiables — respuestas de API, entrada de formularios, webhooks — para que los datos incorrectos se detecten antes de llegar a la lógica de tu aplicación.
Preguntas frecuentes
¿Cómo convierto JSON a un esquema Zod?
¿Cuál es la diferencia entre JSON a Zod y JSON Schema a Zod?
¿Cómo obtengo un tipo TypeScript a partir del esquema?
¿Cómo se gestionan los campos opcionales y null?
¿Qué tipo numérico genera?
¿La salida funciona con Zod 3 y Zod 4?
¿Cómo valido datos con el esquema generado?
¿Cómo se gestionan los arrays y los tipos mixtos?
¿Mis datos JSON son privados y seguros?
¿La herramienta es gratis? ¿Necesito una cuenta?
Herramientas relacionadas
Ver todas las herramientas →Decodificador y Codificador Base64
Codificación y Formato
Decodifica y codifica Base64 online de forma gratuita. Conversión en tiempo real con soporte completo de UTF-8 y emojis. 100% privado — funciona en tu navegador. Sin registro.
Conversor de Base64 a Imagen
Codificación y Formato
Decodifica una cadena Base64 o data URI de vuelta a una imagen en tu navegador. Previsualiza, lee dimensiones y MIME, luego descarga como PNG, JPG, GIF, SVG. Sin subir.
Convertidor de CSV a JSON
Codificación y Formato
Convierte CSV a JSON en tu navegador. RFC 4180, inferencia de tipos, fila de cabecera, seguro para big-int. 100% privado, sin carga.
Conversor de .env a JSON
Codificación y Formato
Pega un archivo .env y obtén JSON al instante. Tus contraseñas, claves API y tokens nunca salen del navegador: 100% privado, sin subidas, gratis.
Decodificador de entidades HTML gratuito — Desescapar HTML
Codificación y Formato
Decodifica entidades HTML y desescapa HTML online: gratis, sin registro, 100 % en tu navegador. Convierte referencias nombradas, decimales y hex de vuelta en caracteres; nunca se sube.
Codificador de entidades HTML gratuito — Escapar HTML
Codificación y Formato
Codifica entidades HTML y escapa caracteres especiales (< > & " ') online: gratis, sin registro, 100 % en tu navegador. Salida con nombre, decimal o hex; nunca se sube.