O que faz
JSON Schema é um vocabulário para descrever o formato de dados JSON: quais propriedades um objeto deve ter, o tipo de cada valor, faixas e padrões permitidos, tamanho de arrays e muito mais. APIs o usam em especificações OpenAPI, editores o usam para autocompletar arquivos de configuração e back-ends o usam para rejeitar requisições inválidas.
Este validador confere um documento JSON contra um schema e lista cada problema encontrado. Cada erro mostra onde está nos dados (um JSON Pointer como /tags/1), uma mensagem legível e a palavra-chave do schema que falhou, para você corrigir os dados ou o schema rapidamente. Suporta draft 2020-12, 2019-09, draft-07 e draft-04, incluindo $ref, $defs, allOf/anyOf/oneOf, if/then/else, unevaluatedProperties e verificação de formatos.
Como usar
- Cole os dados em Dados JSON e o schema em JSON Schema, ou envie um arquivo para cada lado. Exemplo carrega um registro de usuário com alguns erros propositais.
- O resultado é atualizado enquanto você digita: um selo verde quando os dados são válidos; caso contrário, o número de erros e a lista deles.
- Deixe Versão em Automática para seguir o
$schemaou force uma versão. Desative Mostrar todos os erros para parar na primeira falha. - Copiar erros copia a lista como texto simples, para um relatório de bug ou uma revisão de código.
Se algum dos lados não for JSON válido, a mensagem diz se o problema está nos dados ou no schema e informa a linha e a coluna.
Exemplo
Com este schema:
{
"type": "object",
"required": ["id"],
"properties": {
"id": { "type": "integer" },
"age": { "type": "integer", "minimum": 0 }
}
}
o documento {"age": -1} gera dois erros: na (raiz), falta a propriedade obrigatória id; em /age, o valor está abaixo do mínimo de 0.
Dicas
Adicione "additionalProperties": false para pegar nomes de propriedades digitados errado, que de outra forma passam despercebidos. Use enum ou const para valores fixos e pattern para strings como códigos de produto. Quando o schema crescer, mova as partes repetidas para $defs e referencie-as com $ref.
Perguntas frequentes
› Quais versões de JSON Schema são suportadas?
Draft 2020-12, 2019-09, draft-07 (que também cobre o draft-06) e draft-04. Com Versão em Automática, a versão é lida da palavra-chave $schema; schemas sem $schema são tratados como 2020-12.
› O que significam os caminhos dos erros?
O primeiro caminho é um JSON Pointer para o valor dos seus dados que falhou, como /items/2/price; (raiz) significa o documento inteiro. A linha cinza mostra a palavra-chave que falhou e sua posição no schema, como minimum · #/properties/age/minimum.
› Formatos como email e date-time são verificados?
Sim. Os formatos comuns são validados: date, time, date-time, duration, email, hostname, ipv4, ipv6, uri, uri-reference, uuid, regex, json-pointer e outros. Formatos desconhecidos são ignorados, como a especificação permite.
› O schema pode referenciar outros arquivos?
Referências dentro do mesmo schema funcionam, por exemplo um $ref para #/$defs/address. URLs externas não são baixadas, porque nada sai do seu navegador; cole as definições referenciadas em $defs.