Ir para o conteúdo principal

JSON Schema Validator

Valide um JSON contra um JSON Schema.

Schema JSON

Lin 1, Col 1
JSON

JSON

Lin 1, Col 1
JSON

Resultado

Seu resultado aparecerá aqui

Adicione JSON nas duas entradas acima e escolha Validar.

Aguardando entrada

Valide um JSON com um JSON Schema (draft 2020-12, ou draft-07 pelo $schema) e veja cada erro com o caminho em que ele ocorre.

O que é o JSON Schema Validator?

O JSON Schema Validator é uma ferramenta online gratuita que confere um documento JSON com um JSON Schema, no seu navegador, e lista cada ponto em que o documento descumpre o schema, cada um com a sua localização e a palavra-chave que falhou. Ele segue o draft 2020-12, a menos que o schema indique outro draft em $schema.

Use para testar um schema ou para descobrir por que o payload de uma API ou um arquivo de configuração é recusado.

O que ela aceita

  • Um schema (um objeto, ou true ou false) e um documento JSON, ambos como texto. A validação segue o JSON Schema draft 2020-12, a menos que $schema diga outra coisa.
  • Drafts: $schema seleciona draft-04, draft-06, draft-07, 2019-09 ou 2020-12, com http ou https e com ou sem um # final. O draft-06 é verificado com as regras do draft-07, porque a ferramenta não tem um modo draft-06 separado e o draft-07 só acrescenta palavras-chave a ele. Qualquer outro $schema é recusado.
  • Todos os erros são coletados, não só o primeiro. Cada um é uma linha com a localização do valor no seu JSON como um JSON Pointer depois de # (# é o documento inteiro, #/items/1/qty é um valor aninhado), a palavra-chave que falhou entre parênteses e uma explicação.
  • Erros que apenas se repetem aparecem uma vez, e as linhas que só repetem um erro mais profundo ficam de fora. Se houver mais de 100 erros, os 100 primeiros são listados e o resultado diz quantos mais foram omitidos.
  • Um $ref que aponta para dentro do mesmo schema, como #/$defs/name, é seguido. Um $ref para outro documento nunca é buscado: ele é recusado como schema inválido.
  • Um schema que é apenas true aceita todo documento, e false recusa todos.

Bom saber

  • A ferramenta só valida. Ela nunca altera o seu JSON, preenche valores padrão nem converte tipos.
  • A localização e a palavra-chave são as partes em que confiar. A explicação depois delas é um resumo em linguagem simples, escrito no idioma da página.
  • Antes de validar, a ferramenta recusa um schema, aponta-o como o schema e indica a palavra-chave, quando um type não é um dos tipos JSON (array, boolean, integer, null, number, object ou string), quando um $ref não aponta para lugar nenhum ou aponta para outro documento, ou quando um pattern ou um nome de patternProperties não é uma expressão regular válida. Um $ref que volta para si mesmo é interrompido como limite de processamento.
  • A ferramenta não confere um schema com o seu meta-schema. Qualquer outra palavra-chave com o formato errado (como required: 5) só é percebida quando o JSON conferido chega até ela, então um erro ali pode passar despercebido.
  • Um nome repetido dentro de um objeto, no schema ou no JSON, e uma string com um escape substituto (surrogate) sem par são recusados em vez de deixar um valor vencer.
  • Na validação, os números são lidos como os números de precisão dupla que a maioria dos programas usa, então um número com mais dígitos que isso é comparado pelo valor arredondado.

Como usar o JSON Schema Validator?

  1. Cole ou digite o seu schema em “Schema JSON” e o JSON a conferir em “JSON”. Nada é executado enquanto você digita.
  2. Aperte “Validar”.
  3. Leia o resultado ao lado das entradas. Se o JSON seguir o schema, o resultado diz isso. Se não seguir, cada erro é uma linha: a localização no seu JSON, a palavra-chave que falhou entre parênteses e uma explicação. Se uma entrada não puder ser usada, a mensagem diz qual é e informa a linha e a coluna.
  4. Quando houver erros, aperte “Copiar” para colocá-los na área de transferência, ou “Baixar” para salvá-los como errors.txt.

Exemplos

JSON que segue o schema

Coloque o schema em “Schema JSON”, este JSON em “JSON” e aperte “Validar”. Todas as regras são cumpridas, então o resultado diz que o JSON segue o schema.

{
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "age": { "type": "integer", "minimum": 0 }
  },
  "required": ["name"]
}
{"name": "Ada", "age": 36}

O JSON é válido de acordo com o schema.

Erros com a sua localização

O name que o schema exige está faltando, o que é informado em # (o documento inteiro), e age está abaixo do mínimo de 0, o que é informado em #/age. Todos os erros são listados juntos, não só o primeiro.

{
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "age": { "type": "integer", "minimum": 0 }
  },
  "required": ["name"]
}
{"age": -3}

O JSON não corresponde ao schema.

# (required): Falta a propriedade obrigatória "name".
#/age (minimum): -3 é menor que 0.

Um tipo errado e uma propriedade extra

age é um texto, mas o schema pede um inteiro. A propriedade extra não é um erro, porque este schema não define additionalProperties como false: um schema permite tudo o que não proíbe.

{
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "age": { "type": "integer", "minimum": 0 }
  },
  "required": ["name"]
}
{"name": "Ada", "age": "x", "extra": 1}

O JSON não corresponde ao schema.

#/age (type): O tipo "string" não é válido. Esperado: "integer".

Um schema que a ferramenta não consegue usar

A ferramenta suporta o draft-04, draft-06, draft-07, 2019-09 e 2020-12. Um $schema desconhecido é recusado, em vez de validar com regras que podem não ser as que você quis. A mensagem aponta para a entrada do schema.

{"$schema": "https://example.com/meta"}
{}

O schema declara um $schema que esta ferramenta não suporta. Ela suporta JSON Schema draft-04, draft-06, draft-07, 2019-09 e 2020-12. Remova o $schema para usar o 2020-12.

Limites e privacidade

Limites de tamanho

  • Entrada: cada caixa aceita até 2.000.000 bytes de texto em UTF-8 (cerca de 2 MB), contados separadamente. Letras acentuadas e emojis ocupam mais de um byte cada. Uma entrada maior é recusada.
  • Aninhamento: até 256 níveis de objetos e listas dentro uns dos outros. Um JSON mais profundo é recusado porque passa do que a ferramenta processa.
  • Tempo: uma execução que demora mais que o seu limite de tempo é interrompida. Tente uma entrada menor.

Meu texto é enviado para um servidor?

Não. O texto que você digita ou cola, ou abre de um arquivo local, é processado localmente no seu navegador, em um Web Worker dedicado. Ele nunca é enviado para o servidor (um arquivo que você abre é lido apenas no seu navegador) e não é gravado em armazenamento, cookies nem na barra de endereços.

“Copiar” coloca o resultado na área de transferência e “Baixar” o salva como arquivo, mas só quando você aperta o botão. O arquivo é criado no seu navegador, então nada é enviado.

Para ver os detalhes completos, consulte a Política de Privacidade

Ferramentas e páginas relacionadas

O seu texto continua na página quando você troca de ferramenta na mesma aba, então dá para testar o mesmo texto em outra. Recarregar ou fechar a aba o encerra.

Todas as ferramentas