Skip to content

Conversor JSON para schema Zod

Cole JSON e obtenha um schema Zod pronto para uso na hora, 100% no navegador. z.number().int(), .optional() e .nullable() corretos, além de um tipo z.infer. Grátis.

Sem rastreamento Roda no navegador Grátis
Opções
0 caracteres
Saída Zod
0 linhas
Saída verificada em relação à semântica de parsing do Zod v3 e v4 para payloads de API do mundo real. — Go Tools Team · Jul 2, 2026

O que é um schema Zod?

Um schema Zod é uma descrição TypeScript-first do formato de um valor que valida dados em tempo de execução e infere um tipo estático em tempo de compilação. Gerar um a partir de uma amostra JSON significa que você nunca escreve à mão o código repetitivo de validação para respostas de API, formulários ou arquivos de configuração. Este gerador de schema Zod infere tipos corretos, marca chaves ausentes como .optional(), valores null como .nullable() e entrega um tipo z.infer — tudo 100% no seu navegador.

Exemplos

Resposta 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>;

Um payload REST típico torna-se um schema Zod pronto para uso. Números inteiros inferem z.number().int(), e o array roles torna-se z.array(z.string()). Um tipo z.infer vem de brinde.

Objeto aninhado

{"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>;

Objetos aninhados tornam-se seu próprio schema nomeado (OwnerSchema) e são referenciados por campo. Os schemas filhos são declarados antes do schema pai que os usa, e formatos idênticos são declarados uma vez e reutilizados.

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>;

Arrays de objetos são mesclados em um único schema de elemento. Uma chave ausente em alguns itens torna-se .optional(), então o parsing ainda funciona quando ela não está presente.

Campo nullable e unificação 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>;

Um campo que é null em algumas amostras, mas tipado em outras, torna-se .nullable(). Como 0.1 tem ponto decimal, o número unifica para z.number() em vez de z.number().int().

Como converter JSON para Zod

  1. 1

    Cole seu JSON

    Insira um objeto JSON, array ou resposta de API no campo de entrada. A conversão começa instantaneamente.

  2. 2

    Ajuste a saída

    Renomeie o schema raiz e alterne a linha de import, o tipo z.infer ou a palavra-chave export para combinar com o estilo do seu projeto.

  3. 3

    Copie ou baixe

    Pegue o schema Zod gerado com um clique e cole-o direto na sua camada de validação.

Common Use Cases

Validar respostas de API
Transforme uma resposta de exemplo de REST ou GraphQL em um schema Zod e faça o parse na fronteira do fetch, para que dados malformados falhem rápido com um erro claro em vez de vazar pelo seu app.
Formulários e entradas com tipo seguro
Gere um schema para entrada de formulários ou queries e reutilize o tipo z.infer na sua UI e nos handlers para segurança de tipos de ponta a ponta.
Schemas de tRPC e de ferramentas de IA
Crie schemas de entrada e saída para procedimentos tRPC ou ferramentas de IA com saída estruturada a partir de um payload de exemplo, em vez de escrevê-los à mão.

Como a conversão funciona

Inferência estrutural
Cada objeto torna-se um schema nomeado; formatos idênticos são declarados uma vez e reutilizados. Arrays de objetos são mesclados chave por chave, e chaves ausentes em alguns itens tornam-se .optional().
Mapeamento de tipo correto
Inteiros mapeiam para z.number().int() e decimais para z.number(). Strings, booleanos e valores null mapeiam para z.string(), z.boolean() e z.null(); um array de primitivos mistos torna-se um z.union().
Tipos TypeScript incluídos
Um alias de tipo z.infer é emitido para o schema raiz, então o schema continua sendo a única fonte de verdade e seus tipos nunca se desalinham da sua validação.
100% no lado do cliente
O parsing e a geração rodam no seu navegador sem chamadas de rede, então seus dados permanecem privados.

Dicas para schemas Zod limpos

Nomeie seu schema raiz
Defina um nome de raiz significativo, como User ou ApiResponse, em vez do padrão Root, para um código legível e autodocumentado.
Refine z.unknown() e unions
Arrays vazios ou mistos produzem z.unknown() ou um z.union() amplo. Cole uma amostra mais rica e representativa para que a ferramenta infira tipos precisos, e depois aperte tudo o que permanecer ambíguo.
Valide na fronteira
Chame safeParse() onde dados não confiáveis entram — respostas de API, entrada de formulários, webhooks — para que dados ruins sejam capturados antes de chegarem à sua lógica de aplicação.

Perguntas frequentes

Como converter JSON para um schema Zod?
Cole seu JSON na caixa à esquerda. O conversor faz o parse instantaneamente no seu navegador e gera um schema Zod à direita, junto com um alias de tipo z.infer. Clique em Copiar para pegá-lo — sem upload, sem conta, sem espera.
Qual é a diferença entre JSON para Zod e JSON Schema para Zod?
Esta ferramenta pega um valor JSON de amostra — uma resposta de API ou objeto — e infere um schema Zod a partir do seu formato. JSON Schema para Zod é outra tarefa: converte um documento JSON Schema existente em Zod. Se você tem dados brutos, use esta ferramenta. Se já tem um arquivo JSON Schema, converta esse.
Como obtenho um tipo TypeScript a partir do schema?
Todo resultado inclui um alias de tipo z.infer, então você obtém um Root totalmente tipado sem escrevê-lo à mão. Mantenha o schema como única fonte de verdade e deixe o TypeScript derivar o tipo, para que os dois nunca se desalinhem. Você pode desativar a linha z.infer em Opções se quiser apenas o schema.
Como campos opcionais e null são tratados?
Quando uma chave aparece em alguns itens do array, mas não em outros, o campo é marcado como .optional(). Um campo que é null em algumas amostras e tipado em outras torna-se .nullable(). Um campo que é sempre apenas null torna-se z.null(). O Zod trata opcional e nullable de forma independente, então o schema reflete como seus dados realmente variam.
Qual tipo numérico ele gera?
Números inteiros mapeiam para z.number().int(); qualquer valor escrito com ponto decimal ou expoente mapeia para z.number(). Se um campo mistura inteiros e decimais entre amostras, ele unifica para z.number() para que a validação nunca rejeite um valor legítimo.
A saída funciona com Zod 3 e Zod 4?
Sim. O código gerado usa o subconjunto comum e estável — z.object, z.string, z.number, z.array, z.union, .int, .optional, .nullable e z.infer — que se comporta de forma igual no Zod 3 e no Zod 4. Só garanta que o pacote zod esteja instalado no seu projeto.
Como valido dados com o schema gerado?
Importe o schema e chame RootSchema.parse(data) para lançar erro em entradas inválidas, ou RootSchema.safeParse(data) para obter um resultado tipado de sucesso ou erro sem lançar. Isso é ideal em fronteiras de confiança como respostas de API, entrada de formulários e configuração de ambiente.
Como arrays e tipos mistos são tratados?
Um array de um único tipo torna-se z.array desse tipo. Um array de objetos é mesclado chave por chave em um único schema de elemento. Um array que mistura tipos primitivos torna-se um z.union, e qualquer coisa mais ambígua recorre a z.unknown para que você possa refiná-la a partir de uma amostra mais rica.
Meus dados JSON são privados e seguros?
Sim. A conversão roda 100% no seu navegador com JavaScript. Seu JSON — incluindo tokens, IDs ou dados de clientes — nunca sai da página e nunca é enviado a um servidor.
A ferramenta é grátis? Preciso de uma conta?
É completamente grátis, sem cadastro, sem limites e sem anúncios poluindo o espaço de trabalho.

Ferramentas relacionadas

Ver todas as ferramentas →