Validador de JSON Schema
Valida um documento JSON com um JSON Schema no teu navegador. Cada erro é listado com o caminho na instância, a palavra-chave e o caminho no schema.
| # | Caminho na instância | Palavra-chave | Mensagem | Caminho no schema |
|---|
Como validar JSON com um schema
- Cola o teu schema em JSON Schema e os teus dados em Documento JSON, ou escolhe um caso pronto em Exemplo.
- Deixa Draft em Automático ($schema) para usar a versão indicada no
$schemado schema, ou força o draft 4, 7, 2019-09 ou 2020-12. - A validação corre enquanto escreves; Validar volta a executá-la. Formatar os dois reindenta os dois textos.
- Lê o resultado: uma linha verde quando o documento é válido, ou então uma tabela de erros.
Ler a tabela de erros
Cada linha é uma regra que falhou:
- Caminho na instância é um JSON Pointer para o valor que falhou.
/roles/1é o segundo elemento deroles;(raiz)é o documento inteiro. - Palavra-chave é a regra do schema que falhou:
type,required,minimum,pattern,format,additionalProperties, etc. - Mensagem explica a falha, por exemplo
0 is less than 1.As mensagens do validador estão em inglês. - Caminho no schema aponta para a palavra-chave dentro do schema, como
/properties/id/minimum, para encontrares a regra depressa.
A validação não para no primeiro problema: todos os erros são listados. Quando uma propriedade de um objeto falha, o validador indica um resumo («Property “id” does not match schema») seguido do motivo preciso. Mostrar só os erros mais específicos esconde esses resumos; desmarca a opção para veres a cadeia completa. Os erros em anyOf e oneOf são sempre mantidos juntamente com os erros específicos de cada ramo, porque só fazem sentido em conjunto.
O que é suportado
- Drafts: 4, 6 (validado com as regras do draft 7), 7, 2019-09 e 2020-12, incluindo
$defs/definitions,$reflocais,if/then/else,dependentRequired,dependentSchemas,prefixItems,unevaluatedPropertieseunevaluatedItems. - Formatos: são verificados
date,time,date-time,duration,email,hostname,ipv4,ipv6,uri,uri-reference,uri-template,uuid,regex,json-pointererelative-json-pointer. Os formatos desconhecidos são ignorados, como a especificação permite. - Referências: um
$refpode apontar para qualquer ponto do schema, incluindo um$idque este declare. Os schemas remotos nunca são transferidos; uma referência para outro URL é indicada como não resolvida.
Esta ferramenta valida documentos segundo o teu schema. Não verifica se o próprio schema respeita o meta-schema, mas avisa-te de nomes de type desconhecidos, como "strin" ou "int", um erro de escrita frequente que os validadores costumam ignorar em silêncio.
Os exemplos
- Perfil de utilizador (2020-12):
required, comprimentos de strings,format: email, umenumdentro deitems,uniqueItemseadditionalProperties: false. - Lista de produtos com $ref (draft-07): uma lista cujos elementos referenciam
#/definitions/product, com umpatternpara o SKU e um preço comexclusiveMinimum. - Configuração com if/then (2019-09): um certificado obrigatório apenas no modo HTTPS, um
oneOfentre email e URI, e limites numéricos.
Cada exemplo vem com um documento com erros propositados, para veres como os erros aparecem.
Perguntas frequentes
Os meus dados são enviados?
Não. O schema e o documento são validados no teu navegador; nada é enviado para um servidor.
Porque é que o $ref do meu schema está «não resolvido»?
O validador só conhece o schema que colaste. Um $ref para outro ficheiro ou URL não pode ser seguido; copia as definições referenciadas para $defs e aponta antes para #/$defs/….
Que draft devo usar?
Usa aquele a que o teu projeto se destina e declara-o com $schema. Para schemas novos, o 2020-12 é a versão atual; o OpenAPI 3.1 também o usa.
Porque é que integer rejeita 2.0?
Não rejeita: o JSON Schema trata 2.0 como inteiro, porque o seu valor é inteiro. É 2.5 que falha "type": "integer".
Funciona offline?
Sim. Depois de a página carregar e de fazeres uma primeira validação (que carrega o validador), não é preciso ligação.
Ferramentas relacionadas
- Formatador e validador de JSON Formatador e validador de JSON gratuito que formata, minifica e verifica JSON no teu navegador, com os erros de sintaxe indicados por linha e coluna.
- Testador de JSONPath Testa expressões JSONPath no teu próprio JSON, no navegador. Filtros, slices, descida recursiva, caminhos e JSON Pointers, com exemplos prontos.
- Conversor de JSON para YAML Converte JSON em YAML e YAML em JSON no teu navegador, com suporte de âncoras, merge keys e ficheiros com vários documentos. Nada é enviado.