onlinetools.dev

Validador e gerador de JSON Schema

Valide JSON contra um schema ou infira um schema de dados de exemplo

Roda localmente
loading…
Sobre esta ferramenta

Duas direções da mesma disciplina: cole um JSON de exemplo e receba um schema draft-07 inferido dele, ou cole dados mais um schema e veja cada violação listada com seu caminho JSON. A validação roda sobre o Ajv — o mesmo motor que a maioria dos serviços Node usa — então o que passa aqui passa no CI.

A inferência pensa em produção: chaves de objeto viram propriedades tipadas e entradas em required, arrays mesclam as formas de todos os seus membros, inteiros são distinguidos de floats, e chaves presentes em só alguns membros de um array são corretamente deixadas fora de required. O resultado é um ponto de partida que você aperta com formatos, faixas e padrões.

Respostas de API e arquivos de configuração são exatamente os dados que você menos quer em um servidor de terceiros. Inferência e validação rodam inteiramente no seu navegador.

Perguntas frequentes

Qual draft do JSON Schema é suportado?
A inferência emite draft-07, o draft mais amplamente suportado por editores e validadores. A validação aceita draft-07 e os drafts anteriores que o Ajv entende em modo não estrito; palavras-chave de 2019-09/2020-12 em geral também funcionam, já que palavras-chave desconhecidas são ignoradas em vez de fatais.
O que significa o $ nos caminhos das violações?
É a raiz do documento, no estilo JSONPath: $.age significa a propriedade age de nível superior, $.items.2.name o name do terceiro elemento do array. Um caminho vazio ($) significa que a violação é sobre a raiz do documento em si — tipo errado, ou uma propriedade obrigatória ausente.
Por que o schema inferido é mais estrito ou mais frouxo do que eu esperava?
Ele descreve exatamente a amostra que você deu: campos presentes em todo lugar viram obrigatórios, e só os tipos observados são permitidos. Alimente-o com uma amostra mais variada (um array de objetos representativos) para um schema mais geral, e depois ajuste na mão — a inferência não pode conhecer a intenção.
A validação suporta format, pattern e outras palavras-chave de restrição?
Palavras-chave estruturais (type, required, properties, items, enum, minimum, pattern…) são totalmente aplicadas. Strings de format como "email" ou "date-time" não são asseridas — isso espelha a especificação do JSON Schema, em que format é anotação por padrão, e evita falsa confiança.
Ferramentas relacionadas