Validador de JSON Schema

Cole um esquema e um documento, escolha o rascunho, e o validador verifica o documento contra cada palavra-chave que seu esquema usa, type, required, enum, oneOf, $ref, if/then/else, format personalizado, relatando cada violação com um ponteiro no estilo JSONPath para a localização exata do erro.

Como validar contra um esquema

  1. 1

    Cole o esquema

    JSON Schema rascunho 04, 07 ou 2020-12. A palavra-chave `$schema` (se presente) seleciona automaticamente o rascunho.

  2. 2

    Cole o documento

    O JSON que você deseja validar. Deve ser um JSON válido primeiro, erros de sintaxe são mostrados antes da avaliação do esquema.

  3. 3

    Validar

    Cada violação é relatada com um ponteiro JSON (`/user/email`) e a palavra-chave que falhou (`format`, `required`, etc.).

  4. 4

    Corrigir e revalidar

    Edite qualquer lado e o status é atualizado ao vivo.

Palavras-chave suportadas

Núcleo: type, enum, const, multipleOf, maximum, minimum, exclusiveMaximum, exclusiveMinimum, maxLength, minLength, pattern, maxItems, minItems, uniqueItems, maxContains, minContains, maxProperties, minProperties, required, dependentRequired.

Composição: allOf, anyOf, oneOf, not.

Aplicadores: properties, patternProperties, additionalProperties, items, prefixItems, contains, propertyNames.

Condicionais: if, then, else, dependentSchemas.

Referências: $ref, $defs, $id, $anchor.

Formatos (com validação quando habilitada): date-time, date, time, duration, email, hostname, ipv4, ipv6, uri, uuid, regex.

Saída de erro

FAIL  /user/email        format            "not-an-email" não é um "email" válido
FAIL  /user/age          minimum           -3 é menor que o mínimo 0
FAIL  /orders/0/total    type              "42" não é do tipo "number"
FAIL  /                  required          propriedade obrigatória "shippingAddress" ausente

Cada erro inclui o caminho e a palavra-chave que falhou, facilitando a localização no seu editor.

Diferenças de rascunho que pegam

Palavra-chave Rascunho 04 Rascunho 07 Rascunho 2020-12
id vs $id id $id $id
exclusiveMaximum como bool Sim Número Número
Sintaxe de array items items items prefixItems
$ref permite irmãos Não Não Sim

Defina o rascunho correto; validar um esquema rascunho-04 como 2020-12 irá interpretar incorretamente id e algumas outras sutilezas.

Fluxos de trabalho típicos

  • Teste de contrato de API: antes de um deploy, execute o esquema OpenAPI gerado/atualizado contra respostas de amostra reais.
  • Fortalecimento de configuração: valide cada configuração YAML/JSON no CI contra um esquema antes de mesclar.
  • Ingestão de dados: rejeite cargas úteis que não correspondem à forma esperada cedo, com uma mensagem de erro clara.

Erros comuns

  • Esquecer a aplicação de format. Por padrão, a maioria dos validadores trata formatos desconhecidos apenas como anotações. Habilite a validação de formato estrito para realmente rejeitar emails e datas ruins.
  • Uso excessivo de oneOf. Se dois ramos de oneOf se sobrepuserem, o documento falhará (deve corresponder exatamente a um). Use anyOf ou padrões de discriminador.
  • Esquemas rígidos com additionalProperties: false. Adicionar um novo campo opcional se torna uma mudança quebradora. Omitir a menos que você realmente queira um objeto fechado.

Perguntas frequentes

Sim. Os rascunhos 2020-12, 07 e 04 são todos suportados. O validador lê a palavra-chave $schema do seu documento para escolher o correto, ou recua para o seletor na interface.

Formatos padrão (email, date-time, uuid, ipv4, etc.) são validados quando o formato estrito está habilitado. Formatos personalizados declarados no seu esquema são tratados apenas como anotações, a menos que você forneça uma regex com pattern.

Referências internas (#/$defs/foo) são resolvidas automaticamente. Referências HTTP externas não são buscadas por padrão, por segurança. Inline suas referências externas primeiro, ou use uma ferramenta dedicada que suporte a resolução remota de $ref.

Sim. Tanto o esquema quanto o documento permanecem locais. O conteúdo colado nunca é enviado, seguro para contratos de API internos e dados sensíveis.

Ferramentas relacionadas

Ferramenta disponível em outros idiomas