Categoria: Desenvolvimento
Conversor de JSON para schema Zod
Gere um schema Zod a partir de um JSON de amostra sem enviar seus dados
Cole JSON e gere um schema Zod no seu navegador. Infira objetos, arrays, strings, números, booleanos, nulos e campos opcionais e copie uma saída pronta para TypeScript. Nada é enviado.
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>;
Inferido apenas a partir desta amostra: ele vê que um campo continha uma string, não que essa string precise ser um e-mail, ter comprimento mínimo ou corresponder a um de alguns valores permitidos. Trate a saída como ponto de partida e ajuste as regras você mesmo.
Tudo nesta página é processado no seu navegador. Nada é enviado.
Tudo nesta página é processado no seu navegador. Nada é enviado.
Para que serve
Esta ferramenta lê uma amostra JSON localmente e rascunha o schema de objeto Zod correspondente, incluindo objetos aninhados, arrays e uniões. Quando um array guarda objetos que não combinam — um elemento tem o campo `pinned` e o seguinte não — a chave é marcada como `.optional()` em vez de ser descartada em silêncio, porque justamente essa divergência costuma ser o que você mais precisava notar. Um valor que às vezes era nulo vira `.nullable()` em vez de uma união de dois membros. O que ela não consegue é inventar regras que nunca viu: dados de amostra mostram que um campo continha uma string, não que essa string precise ser um e-mail, ficar abaixo de 80 caracteres ou ser um de três valores permitidos. A saída é um andaime para apertar, não um contrato pronto.
Como usar
- Cole uma amostra JSON representativa — quanto mais variação ela cobrir, melhor a inferência.
- Nomeie o schema e escolha se quer incluir o import do zod e o tipo inferido.
- Copie o código gerado e depois aperte as regras de campo que sua amostra não conseguia mostrar.
Privacidade
Esta ferramenta roda inteiramente no seu navegador. O que você digita nunca é enviado, salvo ou compartilhado — fechar a aba já remove tudo.
Perguntas frequentes
- Meu JSON é enviado?
- Não. O JSON é analisado e o schema é gerado inteiramente na aba do navegador; nem a entrada nem a saída são enviadas a um servidor, registradas ou armazenadas.
- Quão precisa é a validação inferida?
- Tão precisa quanto sua amostra. Ela captura estrutura e tipos com fidelidade, mas não conhece restrições que a estrutura não expressa — formatos, faixas, enumerações ou quais campos são realmente obrigatórios em produção. Revise cada campo antes de confiar nele.
- Ela lida com arrays e campos opcionais?
- Sim. Arrays viram z.array(...), e quando os objetos de um array têm chaves diferentes, as que não aparecem em todos são marcadas como .optional(). Um campo que às vezes era nulo vira .nullable().
- Posso usar a saída em TypeScript?
- Sim. O arquivo gerado exporta o schema e, se você deixar a opção ligada, um alias de tipo `z.infer`, então você tem um validador e o tipo estático correspondente vindos da mesma fonte.