Validador JSON Schema online: erros com caminho e motivo
Com este validador JSON Schema você cola um esquema e os dados JSON e vê na hora se os dois combinam. Se não combinarem, cada erro aparece com o caminho até o valor que falhou e um motivo em linguagem simples, como $.users[0].email. Draft-07, 2019-09 e 2020-12 são aceitos, e as duas caixas ficam no seu dispositivo.
Validar JSON com schema online, passo a passo
- Cole seu esquema na caixa Esquema JSON (ela mostra “Cole seu esquema JSON aqui...”).
- Cole os dados a verificar na caixa Dados JSON.
- Leia o Resultado. Ele se atualiza ao colar, ou cerca de 300 milissegundos depois que você para de digitar, então não há nada para apertar.
- Um Válido verde com “Os dados JSON seguem o esquema.” significa que os dados passam. Um “Inválido: 3 erros” vermelho lista cada falha.
- Corrija os dados (ou o esquema) e o resultado muda enquanto você edita.
Enquanto as duas caixas não estiverem preenchidas, o resultado diz “Cole um esquema e os dados JSON para verificá-los.” Se uma caixa tiver um texto que não é JSON, aparece um quadro vermelho JSON inválido com o motivo e “Linha X, coluna Y”, e o resultado diz qual caixa corrigir. Para arrumar antes um documento bagunçado, o “Formatador de JSON” mostra a mesma linha e coluna para JSON quebrado.
Como ler os erros: caminho e motivo
Cada erro tem duas partes: um caminho e um motivo. O caminho começa em $, a raiz dos seus dados, e segue os nomes das propriedades com pontos e as posições de array entre colchetes, contando a partir de 0. Exemplo: o esquema exige id como inteiro a partir de 1, email no formato email e tags sem repetição; os dados são {"id":"7","email":"ana@","tags":["a","a"]}. O resultado diz “Inválido: 3 erros”:
$.id: Deve ser um inteiro, mas é uma string.$.email: Deve corresponder ao formato “email”.$.tags: Os itens [0] e [1] são idênticos, mas cada item precisa ser diferente.
Todos os erros são listados, não só o primeiro, então você corrige um documento inteiro de uma vez. Depois de 100 erros, a lista termina com uma linha como “e mais 250 erros não exibidos”; o número no título continua exato. Se faltar uma propriedade obrigatória (required), o erro aparece no caminho do objeto que deveria contê-la, por exemplo $.users[0]. Palavras-chave mais raras (not, contains, propertyNames, dependentRequired e if/then/else) também têm motivos claros.
Modo estrito: additionalproperties false
Por padrão, um esquema permite propriedades extras: dados com um campo nick que o esquema nunca menciona passam mesmo assim. Ative Modo estrito (“Falha quando os dados têm propriedades que o esquema não lista.”) para pegar erros de digitação e sobras. Com o esquema acima e os dados {"id":1,"email":"ana@example.com","nick":"x"}, o resultado é “Válido” sem o modo e “Inválido: 1 erro” com ele, em $: Propriedade inesperada “nick”.
Por trás do interruptor, a ferramenta acrescenta unevaluatedProperties: false ao esquema raiz e a cada esquema de propriedade ou item que descreve um objeto, inclusive através de $ref. O texto na caixa nunca é alterado.
- Um esquema que já define
additionalPropertiesouunevaluatedPropertiesmantém a própria escolha. - Um
{"type":"object"}livre, semproperties, continua aberto. - Ramos de
allOf,anyOfeoneOfe as entradas de$defsnão são trancados sozinhos, então ramos irmãos podem declarar suas próprias propriedades.
Versões do JSON Schema, $ref e formatos
A ferramenta lê a linha "$schema" do seu esquema e confere os dados com as regras correspondentes: http://json-schema.org/draft-07/schema# é tratado como draft-07, https://json-schema.org/draft/2019-09/schema como 2019-09 e https://json-schema.org/draft/2020-12/schema como 2020-12. Sem "$schema", vale 2020-12, ou 2019-09 com sintaxe mais antiga, como um array em items. Draft-04, draft-06 ou qualquer outro endereço não são aceitos, e o resultado diz qual endereço o esquema declara. Isso importa porque algumas palavras-chave mudaram entre versões: prefixItems é do 2020-12 e definitions virou $defs no 2019-09. As duas formas do caminho de referência funcionam: #/$defs/name e #/definitions/name.
$refé seguido só dentro do mesmo esquema. Nada é baixado, então uma referência remota comohttps://example.com/address.jsoné apontada como uma referência que o esquema não define. Cole esse esquema no seu$defse aponte o$refpara lá.formaté verificado, não ignorado: email, date, date-time, uri, uuid e os outros formatos comuns falham com “Deve corresponder ao formato”.- Um esquema quebrado mostra “O próprio esquema não é válido” com os problemas e caminhos que apontam para dentro do esquema, por exemplo
"type": "strng". Os dados não são verificados até o esquema ser corrigido. Um padrão que não é uma expressão regular válida mostra “Não foi possível usar o esquema”.
Limites e privacidade
- Cada caixa aceita até 5.000.000 de caracteres. Acima disso, o resultado pede que você cole um trecho menor.
- Os primeiros 100 erros são listados; o total sempre é contado.
- Só JSON: YAML e arquivos OpenAPI inteiros precisam ser convertidos antes. A ferramenta valida; ela não gera um esquema a partir de dados nem corrige seus dados.
- Os números são lidos como em qualquer
JSON.parse: inteiros acima de 9.007.199.254.740.991 perdem precisão antes de serem verificados. - Seu esquema e seus dados são verificados no seu navegador. Nada é enviado nem salvo.
Perguntas frequentes
Como validar JSON online com um esquema?
Cole o esquema na caixa “Esquema JSON” e os dados a verificar em “Dados JSON”. O resultado aparece na hora ao colar, ou cerca de 300 milissegundos depois que você para de digitar. Um “Válido” verde significa que os dados combinam; um “Inválido” vermelho lista cada erro com caminho e motivo. Não há botão para apertar.
Quais versões do JSON Schema são aceitas: draft-07, 2019-09 ou 2020-12?
As três. A versão vem da linha “$schema” do seu esquema. Um esquema sem “$schema” é verificado como 2020-12, ou como 2019-09 se usar sintaxe mais antiga, como um array em items. Esquemas que declaram draft-04, draft-06 ou outro endereço $schema são apontados como não aceitos.
O que significa um caminho como $.users[0].email?
É o local do valor que falhou. $ é a raiz dos seus dados JSON, .users é a propriedade users, [0] é o primeiro item desse array (a contagem começa em 0) e .email é a propriedade dentro dele. Um caminho como $.users[2].address.zip leva ao valor do mesmo jeito, passo a passo.
O que significa o erro de JSON Schema required e por que ele aparece no objeto pai?
A propriedade não existe, então não há nada para apontar. O erro aparece no caminho do objeto que deveria contê-la, por exemplo $.users[0], com o motivo “Falta a propriedade obrigatória “email”.” Adicione a propriedade a esse objeto e o erro some.
Como fazer o esquema recusar propriedades extras (additionalproperties false)?
Ative “Modo estrito”. Ele acrescenta unevaluatedProperties: false à raiz e a cada esquema de propriedade ou item que descreve um objeto, e qualquer propriedade que o esquema não liste falha com “Propriedade inesperada”. Esquemas que já definem additionalProperties ou unevaluatedProperties mantêm a escolha deles.
Ele verifica formatos como email, date-time, uri e uuid?
Sim. A palavra-chave “format” é verificada, então um endereço como ana@ falha em uma string com “format”: “email” e mostra “Deve corresponder ao formato “email”.” Os formatos comuns são cobertos, incluindo email, date, date-time, time, uri, uuid, ipv4, ipv6 e hostname.
Ele consegue seguir um $ref para outro arquivo ou uma URL?
Só dentro do mesmo esquema, como #/$defs/name ou #/definitions/name. Nada é baixado, então uma referência como https://example.com/address.json é apontada como uma referência que o esquema não define. Copie o esquema referenciado para o seu $defs e aponte o $ref para lá.
O que significa “O próprio esquema não é válido”?
O esquema quebra as regras do JSON Schema, por exemplo com “type”: “strng” ou um “minimum” escrito como texto. O resultado lista os problemas com caminhos que apontam para dentro do esquema. Os dados não são verificados até o esquema ser corrigido.
Este JSON Schema validator envia meu esquema ou meus dados para algum lugar?
Não. Este validador de JSON online funciona no seu navegador: o esquema e os dados são verificados inteiramente nele. Nada é enviado nem salvo, e você não precisa de conta.