search

Found

info Visão geral

Valida uma instância JSON contra um Schema e lista cada erro com caminho JSON Pointer, palavra-chave e mensagem, em draft-07, 2019-09 ou 2020-12.

📘 Como usar

  1. Escolha um draft (draft-07, 2019-09 ou 2020-12)
  2. Cole o seu JSON Schema na caixa superior
  3. Cole a instância JSON na caixa inferior
  4. Confira o cartão de veredito e a tabela de erros

Validador de JSON Schema

Em espera
Cole um Schema e uma instância para iniciar a validação.

※ Cobre as palavras-chave principais do JSON Schema (type, required, enum, const, properties, items, allOf, anyOf, oneOf, not, etc.). Não resolve $ref / $defs, dependentSchemas, contains, if/then/else nem unevaluatedProperties/Items.

Article

Validador de JSON Schema | Alterne entre draft-07, 2019-09 e 2020-12 no navegador

Ferramenta leve para validar respostas de API, trechos extraídos de um OpenAPI ou arquivos de configuração contra um JSON Schema. Troque entre os três drafts principais com um clique e veja cada erro com caminho JSON Pointer, palavra-chave e mensagem em uma tabela.

💡 Sobre esta ferramenta

JSON Schema é a linguagem declarativa padrão para descrever a estrutura permitida de um JSON: contratos REST, payloads de webhooks, arquivos de configuração e autocomplete do settings.json no VS Code. O ponto que mais consome tempo no dia a dia raramente é ler o schema — é localizar exatamente qual palavra-chave quebra com uma instância específica. Instalar ajv-cli via npm i -g é exagero para uma revisão pontual de PR, e plugins de IDE costumam estar amarrados a uma versão fixa de draft. Esta ferramenta cobre exatamente esse meio-termo.

Selecione draft-07, 2019-09 ou 2020-12 conforme a versão usada pela sua cadeia de ferramentas. O validador analisa ambas as entradas com JSON.parse nativo e executa uma implementação subset da especificação. Os erros aparecem em uma tabela de três colunas — instancePath (JSON Pointer), keyword e mensagem — permitindo rastrear falhas em properties profundamente aninhados sem se perder. Ative o modo "Apenas o primeiro" para uma saída antecipada na primeira violação encontrada, especialmente útil ao depurar schemas grandes em etapas.

As palavras-chave cobertas são as do núcleo: type, required, enum, const, minLength, maxLength, pattern, minimum, maximum, exclusiveMinimum, exclusiveMaximum, multipleOf, minItems, maxItems, uniqueItems, prefixItems, items, minProperties, maxProperties, additionalProperties, patternProperties, format (subset), allOf, anyOf, oneOf, not e schemas booleanos false. O que não é resolvido: $ref / $defs, dependentSchemas, contains, if/then/else e unevaluatedProperties / unevaluatedItems. Se o seu schema depende dessas palavras-chave, complemente com ajv ou jsonschema no CI — esta ferramenta cumpre o papel de checagem prévia, não de validador de produção.

🧐 Perguntas frequentes

Q. O que muda ao alternar a versão do draft? Em 2020-12, items aceita apenas um único schema; a validação tipo tupla migrou para prefixItems. Este validador implementa prefixItems nativamente e ainda aceita items como array em 2019-09 e draft-07. exclusiveMinimum e exclusiveMaximum são tratados como numéricos nos três drafts.

Q. Quão rigorosa é a verificação de format? email, uri, url, uuid, date, time, date-time, ipv4, ipv6 e hostname são checados via expressões regulares internas — um subset rápido, não conformidade RFC completa. Para revisão estrita de bits de variant do UUID ou date-time ciente de segundos intercalares, sobreponha ajv-formats no seu passo de CI.

Q. Schemas com $ref funcionam? O parsing passa, mas os destinos de $ref não são desreferenciados — as restrições atrás da referência simplesmente não são aplicadas, então a instância pode aparecer como válida mesmo quando o schema referenciado a rejeitaria. Use ajv ou outra implementação completa quando a resolução de $ref for crítica.

Q. A lista de erros está enorme — como priorizo? Mude "Erros" para "Apenas o primeiro" e o validador sai na primeira violação encontrada. Combinado com schemas profundos, é a forma mais rápida de subir a árvore de falhas sem que 200 erros em cascata escondam a causa raiz.

Q. Existe um limite de tamanho de entrada? Não há teto explícito, mas JSON.parse roda na thread principal e consome memória real. Payloads de vários megabytes pertencem ao CI com ajv; esta ferramenta foi dimensionada para corpos de requisição únicos, fixtures e amostras de webhook.

Q. Posso reaproveitar a saída de erros? O botão Copiar abaixo da tabela coloca no clipboard um array JSON de registros {instancePath, schemaPath, keyword, message}. Cole diretamente em um Issue do GitHub, comentário de PR ou relatório de testes.

📚 Curiosidades

O histórico de versões do JSON Schema é incomum: draft-04 (2013) → draft-06 (início de 2017) → draft-07 (fim de 2017) → draft-2019-09 → draft-2020-12. A numeração saltou de sequencial para etiquetas ano-mês por volta de 2019, quando o grupo de trabalho do IETF deixou claro que "draft" aqui significa número de revisão, não "incompleto". Apesar da conotação, draft-07 segue como o mais usado porque está cravado no OpenAPI 3.0 (a spec 3.1 finalmente adotou 2020-12).

No ecossistema lusófono de desenvolvimento, JSON Schema apareceu primeiro pela mão da comunidade de APIs Rails / Sinatra (json-schema gem) e hoje é central em stacks Node.js como Fastify e NestJS combinados com @sinclair/typebox. Palavras-chave anotativas (description, examples, default, deprecated) não interferem na validação mas alimentam Swagger UI, Stoplight e Redoc — vale documentar mesmo schemas internos para que a equipe de produto consiga ler o contrato sem abrir o código.