TK TaskKit
Ferramentas para programadores

Validador JSON Schema

Valida JSON contra um schema com caminhos de erro completos. Draft-07 e 2020-12, verificações de format, modo todos-os-erros.

Schema
Dados
Validação

Não foi possível compilar o schema: Code generation from strings disallowed for this context

As entradas ficam neste dispositivo. Cada ferramenta para programadores no TaskKit corre inteiramente no teu navegador. Tokens, payloads e texto colado não são transmitidos para servidores do TaskKit nem para terceiros.

O que esta ferramenta faz

Valida um documento JSON contra um JSON Schema, devolvendo "válido" ou uma lista de erros com o caminho exato da instância e o caminho do schema para cada falha. Suporta Draft-07 e Draft 2020-12, autodetetados a partir do campo $schema do schema, com substituição manual. Verificações de formato (email, uri, date-time, uuid, etc.) estão ativadas.

Quando usar

  • Desenhar um schema novo e experimentá-lo contra payloads representativos.
  • Diagnosticar porque é que a tua API rejeitou um pedido — o corpo corresponde mesmo à documentação?
  • Verificar que um ficheiro de configuração segue o schema da equipa antes de submeter.
  • Migrar entre Draft-07 e 2020-12 e verificar que nada partiu.

Como funciona

Por baixo isto usa o Ajv (o validador de JSON Schema por trás da maioria das ferramentas JS), fixado em modo all-errors para veres todos os problemas de uma vez em vez de parar no primeiro. As verificações de formato vêm do ajv-formats. Tanto o schema como os dados são parseados localmente; nada é enviado para lado nenhum.

Seleção do draft: se o schema tem "$schema": "https://json-schema.org/draft/2020-12/schema" usamos o dialeto 2020-12; "http://json-schema.org/draft-07/schema#" seleciona Draft-07. Sem $schema, optamos por Draft-07 porque continua a ser o mais comum.

Notas

additionalProperties por defeito é permitido — está certo? Sim, conforme a especificação. Se queres proibir campos extra, define "additionalProperties": false explicitamente. Esta é de longe a causa mais comum de surpresas do tipo "pensei que o meu schema era estrito".

Qual é a diferença entre Draft-07 e 2020-12? O 2020-12 reformula referências ($dynamicRef), divide items em items e prefixItems e muda como additionalItems é tratado. A maioria dos schemas do dia a dia funciona em ambos, mas se usas validação de tuplos, a sintaxe é incompatível.

Porque é que o meu pattern regex faz match a coisas diferentes em validadores diferentes? O JSON Schema especifica sintaxe regex ECMA-262 (o flavor do JavaScript). Validadores noutras linguagens traduzem, por vezes imperfeitamente. Testa padrões no Testador de regex para ter a certeza.

Ferramentas relacionadas