Skip to content

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.

Sin rastreo Se ejecuta en el navegador Gratis
Opciones
0 caracteres
Salida Zod
0 líneas
Salida verificada frente a la semántica de análisis de Zod v3 y v4 en payloads de API reales. — Go Tools Team · Jul 2, 2026

¿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. 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. 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. 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?
Pega tu JSON en el campo de la izquierda. El conversor lo analiza al instante en tu navegador y genera a la derecha un esquema Zod, junto con un alias de tipo z.infer. Haz clic en Copiar para llevártelo — sin subida, sin cuenta, sin esperas.
¿Cuál es la diferencia entre JSON a Zod y JSON Schema a Zod?
Esta herramienta toma un valor JSON de ejemplo — una respuesta de API o un objeto — e infiere un esquema Zod a partir de su forma. JSON Schema a Zod es una tarea distinta: convierte un documento JSON Schema existente en Zod. Si tienes datos en bruto, usa esta herramienta. Si ya tienes un archivo JSON Schema, convierte ese en su lugar.
¿Cómo obtengo un tipo TypeScript a partir del esquema?
Cada resultado incluye un alias de tipo z.infer, así que obtienes un tipo Root totalmente tipado sin escribirlo a mano. Mantén el esquema como única fuente de verdad y deja que TypeScript derive el tipo, para que ambos nunca se desincronicen. Puedes desactivar la línea z.infer en Opciones si solo quieres el esquema.
¿Cómo se gestionan los campos opcionales y null?
Cuando una clave aparece en algunos elementos del array pero no en otros, su campo se marca como .optional(). Un campo que es null en algunas muestras y está tipado en otras se convierte en .nullable(). Un campo que solo es null se convierte en z.null(). Zod trata optional y nullable de forma independiente, así que el esquema refleja cómo varían realmente tus datos.
¿Qué tipo numérico genera?
Los números enteros se asignan a z.number().int(); cualquier valor escrito con punto decimal o exponente se asigna a z.number(). Si un campo mezcla enteros y decimales entre las muestras, se unifica en z.number() para que la validación nunca rechace un valor legítimo.
¿La salida funciona con Zod 3 y Zod 4?
Sí. El código generado usa el subconjunto común y estable — z.object, z.string, z.number, z.array, z.union, .int, .optional, .nullable y z.infer — que se comporta igual en Zod 3 y Zod 4. Solo asegúrate de que el paquete zod esté instalado en tu proyecto.
¿Cómo valido datos con el esquema generado?
Importa el esquema y llama a RootSchema.parse(data) para lanzar un error ante una entrada inválida, o RootSchema.safeParse(data) para obtener un resultado tipado de éxito o error sin lanzar excepciones. Es ideal en las fronteras de confianza como las respuestas de API, la entrada de formularios y la configuración de entorno.
¿Cómo se gestionan los arrays y los tipos mixtos?
Un array de un solo tipo se convierte en z.array de ese tipo. Un array de objetos se fusiona clave a clave en un único esquema de elemento. Un array que mezcla tipos primitivos se convierte en un z.union, y cualquier cosa más ambigua recurre a z.unknown para que puedas afinarla a partir de una muestra más rica.
¿Mis datos JSON son privados y seguros?
Sí. La conversión se ejecuta al 100% en tu navegador con JavaScript. Tu JSON — incluidos tokens, IDs o datos de clientes — nunca sale de la página y nunca se envía a un servidor.
¿La herramienta es gratis? ¿Necesito una cuenta?
Es completamente gratis, sin registro, sin límites y sin anuncios que saturen el espacio de trabajo.

Herramientas relacionadas

Ver todas las herramientas →