DevToolPal
PT

Validador de JSON Schema

Valide dados JSON contra um JSON Schema (2020-12, 2019-09, draft-07 ou draft-04) e veja cada erro com seu caminho.

Roda localmente, nada é enviado

Opções

Dados JSON

JSON Schema

Resultado da validação

O resultado aparece aqui

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

  1. 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.
  2. 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.
  3. Deixe Versão em Automática para seguir o $schema ou force uma versão. Desative Mostrar todos os erros para parar na primeira falha.
  4. 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.