Ir para o conteúdo principal
Bethemesh

Validador de esquema JSON

Compare um documento JSON com um esquema diretamente no navegador. Os erros indicam o caminho, a regra em causa e a origem do problema.

Integrar este widget

Personalize o resultado, verifique a pré-visualização e copie o código.

Pré-visualização

Tipo de código de integração

Código a copiar

Responsivo e redimensionado automaticamente pela Bethemesh.

Esta ferramenta foi útil?

Como funciona esta ferramenta?

Verifique dados JSON face às restrições suportadas de um esquema e localize erros por caminho e palavra-chave. O primeiro campo contém dados e o segundo o esquema: dois JSON válidos não demonstram cumprimento do contrato. A verificação é local e não recupera esquemas remotos. Esta implementação cobre um subconjunto explícito de JSON Schema 2020-12, não todas as extensões.

São suportados type, const, enum, limites numéricos e multipleOf. Strings usam minLength, maxLength e pattern. Arrays podem usar minItems, maxItems, uniqueItems e um esquema items único. Objetos suportam properties, required, additionalProperties, minProperties e maxProperties. Também se avaliam allOf, anyOf, oneOf e not.

Todo o esquema é inspecionado antes dos dados, incluindo ramos não utilizados. Restrições suportadas mas mal definidas geram erros de esquema. $ref, $dynamicRef, prefixItems, contains, patternProperties, dependências condicionais, regras unevaluated e if/then/else não estão implementados. A presença gera um diagnóstico explícito em vez de um êxito enganador.

format não valida emails, URLs ou datas neste motor. Anotações como title e description não verificam valores. Se precisar de vocabulários ou funções adicionais, escolha um validador apropriado em vez de remover regras para obter um resultado positivo.

Os comprimentos contam pontos de código Unicode, não unidades UTF-16 nem caracteres visuais combinados. const, enum e uniqueItems ignoram a ordem de propriedades dos objetos, mantendo a ordem dos arrays e tipos escalares. Os números têm precisão JavaScript: valores grandes e cálculos decimais exigem uma estratégia adequada na aplicação.

Como usar esta ferramenta

  1. Separe dados e esquema

    Cole valores no documento JSON e regras no campo de esquema. O botão de exemplo mostra a separação sem serviços externos.

  2. Execute e leia os diagnósticos

    Reveja resumo, caminho e regra de cada linha. Um caminho iniciado por $schema indica um problema na definição do contrato.

  3. Corrija a entrada apropriada

    Altere dados incorretos ou uma regra mal definida. Mudar um campo oculta resultados anteriores; valide novamente antes de concluir.

Casos de uso

Verificar campos obrigatórios

Descreva um pequeno contrato com required e properties e compare respostas API. Um campo presente com null pode exigir um tipo anulável; não está simplesmente ausente.

Verificar entradas estruturalmente únicas

Use uniqueItems para detetar objetos equivalentes mesmo quando as propriedades são escritas por outra ordem.

Diagnosticar restrições incompatíveis

Distinga erros dos dados, esquemas inválidos e palavras-chave não suportadas. Nos últimos casos, o contrato completo não foi verificado.

Exemplos

Contar um emoji como um ponto de código

O bloco apresenta ambas as entradas: coloque document no primeiro campo e schema no segundo. O resumo confirma que 😀 respeita comprimento entre 1 e 1.

Entrada

{
  "document": "😀",
  "schema": {
    "type": "string",
    "minLength": 1,
    "maxLength": 1
  }
}

Resultado

{
  "valid": true,
  "issues": []
}

Distinguir string e inteiro

id contém a string "1", enquanto o esquema exige integer. O resumo indica type em $.id. O valor não é convertido automaticamente em número.

Entrada

{
  "document": {
    "id": "1"
  },
  "schema": {
    "type": "object",
    "required": [
      "id"
    ],
    "properties": {
      "id": {
        "type": "integer"
      }
    },
    "additionalProperties": false
  }
}

Resultado

{
  "valid": false,
  "issues": [
    {
      "path": "$.id",
      "keyword": "type"
    }
  ]
}

Dicas e boas práticas

  • Teste documentos deliberadamente inválidos para confirmar a aplicação efetiva de cada regra relevante.
  • Mantenha as restrições necessárias. Mude de validador quando não forem suportadas, sem enfraquecer o esquema.
  • Um campo ausente e null exigem verificações distintas: required verifica a chave e type o valor.
  • A validação do esquema não verifica autorizações, existência de recursos ou outras regras do servidor.

Fontes e referências

Perguntas frequentes

São resolvidas referências $ref?

Não. Não se avaliam referências locais nem remotas. Geram um diagnóstico explícito; não é carregado qualquer ficheiro ou URL de esquema.

Porque aceita format: email uma string qualquer?

O motor não trata format como uma asserção de validação. Use restrições suportadas ou um validador com o vocabulário de formatos exigido pelo contrato.

Como conta minLength um emoji?

Um emoji com um ponto de código, como 😀, conta um. Modificadores, marcas combinadas e sequências de junção podem contar vários pontos apesar de parecerem um só carácter.

Porque são iguais objetos escritos de forma diferente?

A ordem das propriedades não altera o valor de um objeto JSON. const, enum e uniqueItems usam igualdade estrutural. A ordem dos elementos de arrays continua significativa.

Ferramentas relacionadas

Ferramentas semelhantes ou complementares a esta.

Ferramentas semelhantes

Verifique uma descrição de API em JSON ou YAML sem a enviar para um servidor.

DesenvolvimentoNovoUtilizar esta ferramenta

Gere um JSON Schema a partir de um exemplo JSON, localmente no navegador.

DesenvolvimentoUtilizar esta ferramenta

Formate, minifique e valide um documento JSON para o tornar mais legível ou compacto.

DesenvolvimentoEm destaqueUtilizar esta ferramenta