Ajuda

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

  1. Cole seu esquema na caixa Esquema JSON (ela mostra “Cole seu esquema JSON aqui...”).
  2. Cole os dados a verificar na caixa Dados JSON.
  3. 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.
  4. 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.
  5. 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”:

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.

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.

Limites e privacidade


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.