Validador de Esquema JSON
Valide JSON contra um JSON Schema (Draft 2020-12) e obtenha erros com o caminho completo da instância
JSON
Esquema
Validador de Esquema JSON
Valide JSON contra um JSON Schema (Draft 2020-12) e obtenha erros com o caminho completo da instância
Recursos
- Valida instâncias JSON contra qualquer JSON Schema usando Ajv (a implementação de referência de facto), com suporte total para Draft-07, 2019-09 e 2020-12
- O relatório de erros lista cada falha como `caminho: mensagem` — os caminhos de instância seguem a notação JSON Pointer RFC 6901, permitindo descer directamente ao nó culpado em dados aninhados
- Todos os erros são relatados num único passo (allErrors: true) em vez de parar no primeiro — veja todos os problemas de uma vez
- Compilação em modo estrito desactivada para que esquemas não-padrão ou estendidos continuem a compilar; allowUnionTypes ligado para esquemas com tipos união
- Botão Carregar exemplo preenche ambos os painéis com um exemplo pequeno (objecto com id e name obrigatórios mais array tags) para ver o validador a funcionar sem escrever nada
- Botão Copiar erros emite a lista completa como bloco `caminho: mensagem` separado por novas linhas — cole directamente num ticket ou fixture de teste
- Puramente do lado do cliente: Ajv corre no seu navegador, nenhum JSON ou esquema é enviado para um servidor, e a ferramenta funciona offline assim que a página é carregada
- O relatório de erro de análise separado distingue JSON malformado de violações de esquema — você sempre sabe se corrigir sintaxe ou contrato
Como usar
- Cole a instância JSON a validar na área de texto esquerda.
- Cole o seu JSON Schema na área direita — use Draft 2020-12, 2019-09 ou Draft-07; Ajv selecciona automaticamente conforme $schema.
- Clique Validar. Se ambas as entradas forem analisadas sem erro, Ajv compila o esquema e executa a validação.
- Leia o resultado: a faixa verde Válido significa que a instância coincide; caso contrário, cada falha mostra o caminho JSON Pointer e a mensagem Ajv legível.
- Clique Copiar erros para obter o relatório completo em linhas `caminho: mensagem` para partilhar ou guardar num ficheiro de fixture.
- Use Carregar exemplo para preencher ambos os painéis com um exemplo funcional se quiser verificar o comportamento antes de colar os seus dados.
Dicas e Melhores Práticas
- Inclua sempre um campo $schema no seu esquema para que Ajv escolha a semântica de draft correcta.
- Prefira additionalProperties: false durante o desenvolvimento para detectar gralhas em nomes de campos cedo.
- Use $defs (ou definitions em Draft-07) para partilhar subesquemas comuns — refs tornam os esquemas DRY e revisíveis.
- Quando a validação passa localmente mas falha em CI, verifique que a mesma versão de Ajv e os mesmos drafts são usados em ambos os ambientes.
- Guarde a saída de Copiar erros nos seus fixtures de teste para que regressões apareçam como diffs de violação de esquema.
Perguntas Frequentes
Que drafts JSON Schema são suportados?
Draft-07, Draft 2019-09 e Draft 2020-12. Ajv selecciona o meta-esquema automaticamente conforme o campo $schema; se omitido, recua para semântica Draft-07. A spec mais recente 2020-12 substitui definitions por $defs e items por prefixItems/items — palavras-chave antigas e novas são aceites.
O que significa o caminho num erro?
Ajv reporta instancePath em notação JSON Pointer RFC 6901: '/users/0/email' significa «a propriedade email do primeiro utilizador». A raiz é a string vazia (apresentada como $ na UI). Isto facilita voltar ao campo falhado em dados aninhados.
Porque é que o meu esquema não compila?
Causas comuns: JSON malformado (vírgulas a mais, aspas simples, chaves sem aspas); um $ref a apontar para uma definição inexistente; ou uma palavra-chave em modo estrito que Ajv não reconhece. O painel de erro de análise do esquema mostra o erro exacto de compilação de Ajv; o modo estrito já está desactivado aqui, por isso a maioria dos esquemas não-padrão continua a compilar.
Porque é que recebo um erro «unknown keyword» ou «unknown format»?
As palavras-chave padrão de JSON Schema (type, required, properties etc.) são embutidas. Nomes de formato personalizados como «date-time», «uri», «email» não são validados por defeito — Ajv trata-os como anotações a menos que carregue ajv-formats. Se precisar de verificar formatos, corra a validação num passo de build com ajv-formats instalado.
O validador pára no primeiro erro?
Não. Ajv está configurado com allErrors: true, por isso cada falha é reportada. Para erros profundamente aninhados isto pode ser verboso; se quiser só o primeiro, passe o JSON+esquema à sua própria chamada ajv() com allErrors: false no seu build.
Funciona para documentos JSON muito grandes?
Sim, mas o padrão correcto em código é compile-once-validate-many. Esta ferramenta recompila em cada clique Validar, o que serve para verificações em dev mas não para caminhos quentes em produção. O build Ajv aqui usado é o bundle ESM padrão; espere tempos de compilação na ordem dos milissegundos para esquemas típicos.
O meu JSON e esquema são enviados para algum lado?
Não. Ambas as áreas de texto ficam no seu navegador; Ajv corre localmente; não registamos, armazenamos nem telemetramos o conteúdo. Pode verificar no separador Rede do DevTools — não há chamada de rede ao clicar Validar.
Qual a diferença para o separador esquema do JSON Formatter?
O separador esquema do JSON Formatter usa o mesmo SchemaService baseado em Ajv para verificações pontuais ao lado de formatação, JSONPath e vista em árvore. Este validador autónomo dá-lhe dois grandes painéis para colar, um carregador de exemplo, exportação de erros copiados e um URL dedicado para marcar ou partilhar — melhor quando validação é a sua única tarefa.