Validador de JSON Schema e gerador de rascunhos

Cole um schema e os dados para ver onde eles divergem; Gerar transforma uma amostra em rascunho de schema e comprova que o rascunho aceita essa amostra. Nada sai do navegador.

Funciona localmente no seu navegador
JSON Schema

Use um objeto JSON Schema; referências que começam com #/ são resolvidas nesta página.

Dados JSON

Cole dados para validar ou uma amostra representativa para gerar um esquema inicial.

Resultado da validação
Informe um JSON Schema e dados JSON e selecione Validar JSON.

Verificações incluídas neste validador local

O validador lê type, enum, const, allOf, anyOf, oneOf, not e if/then/else; properties, patternProperties, additionalProperties, propertyNames, required, dependentRequired, minProperties e maxProperties; items, prefixItems, additionalItems, minItems, maxItems, uniqueItems e contains; minLength, maxLength, pattern e os formatos email, uuid, date, time, date-time, uri, uri-reference, ipv4, ipv6 e hostname; minimum, maximum, exclusiveMinimum, exclusiveMaximum e multipleOf; e valores locais de $ref, incluindo referências que percorrem os dados. A forma booleana de exclusiveMinimum/exclusiveMaximum do draft-04 e a forma de array de items também são lidas. Qualquer outra palavra-chave ou formato é deixado de lado, então confirme as regras de produção com um validador conforme.

Verifique um payload contra o schema nesta aba

O schema e os dados ficam no navegador; nada é enviado. Cada problema é listado com o caminho onde foi encontrado, a lista para depois de 100 problemas, e Gerar escreve um rascunho de schema a partir da sua amostra e verifica essa amostra contra ele.

Como verificar JSON com um schema

Cole um JSON Schema e um documento JSON para ver todos os pontos em que os dados quebram o schema. A verificação roda nesta aba: nada é enviado e a ferramenta continua funcionando sem conexão.

Gerar faz o caminho inverso. Ele lê a sua amostra, escreve um rascunho de schema — itens de array combinados entre todos os elementos, required limitado às chaves que todo objeto carrega — e valida a amostra contra esse rascunho, então um rascunho que não descreve a própria amostra é avisado em vez de ficar escondido.

  1. Cole o schema no campo JSON Schema e o documento no campo de dados JSON. Referências locais como #/$defs/address são seguidas; uma referência para outro arquivo é avisada como não suportada aqui.
  2. Selecione Validar JSON. Cada problema aparece com o caminho onde foi encontrado, por exemplo $.users[2].email, e com a regra que falhou. A lista para depois de 100 problemas e avisa disso.
  3. Selecione Gerar schema a partir dos dados para montar um rascunho da amostra. O rascunho substitui o conteúdo do campo de schema e a amostra é verificada contra ele na hora.
  4. Copiar schema copia o campo de schema, Carregar exemplo preenche os dois campos com um payload de API pequeno que passa, e Limpar esvazia os dois campos e o resultado. Editar qualquer campo depois de um resultado apaga o brilho do veredito antigo e pede para rodar de novo.

O que o validador lê e o que ele deixa passar

O que o validador lê

type, enum, const, allOf, anyOf, oneOf, not e if/then/else; properties, patternProperties, additionalProperties, propertyNames, required, dependentRequired, minProperties e maxProperties; items, prefixItems, additionalItems, minItems, maxItems, uniqueItems e contains; minimum, maximum, exclusiveMinimum, exclusiveMaximum e multipleOf; minLength, maxLength e pattern; e valores locais de $ref, incluindo referências que percorrem os dados. A forma booleana de exclusiveMinimum/exclusiveMaximum do draft-04 e a forma de array de items também são lidas.

As verificações de formato cobrem email, uuid, date, time, date-time, uri, uri-reference, ipv4, ipv6 e hostname. Uma data como 2024-02-30 e uma hora como 99:99 são recusadas porque o calendário e o relógio são conferidos, não só a forma do texto; qualquer outro nome de formato é deixado de lado. A especificação trata format como anotação, então esta página é mais rígida que um leitor simples.

Respostas que não dependem da ordem das chaves

enum, const e uniqueItems comparam valores de forma estrutural: {"a": 1, "b": 2} e {"b": 2, "a": 1} são um valor só, não dois. A versão anterior desta ferramenta comparava o texto JSON e errava nos dois sentidos: recusava um valor enum válido e aceitava um item repetido no array.

minLength e maxLength contam pontos de código, então um emoji escrito como par substituto conta como um caractere.

Rascunho de schema a partir de uma amostra

Os itens de um array são combinados entre todos os elementos: um array misto gera uma lista anyOf, e os objetos são combinados propriedade a propriedade, com required limitado às chaves que todo objeto carrega. Um objeto ou array vazio não gera uma lista required vazia.

Strings que parecem UUID, e-mail, data, data-hora ou URI recebem a dica de formato correspondente, então o rascunho é mais útil que um tipo solto: serve para uma primeira passada, não como contrato.

Limites

A lista de problemas para em 100 entradas. Aninhamento acima de 4000 níveis interrompe a verificação com uma mensagem em vez de derrubar o navegador, e uma referência #/ circular é avisada em vez de seguida para sempre.

Padrões e formatos usam o motor de expressões regulares do navegador; 20.000 itens de array ou propriedades de objeto são verificados em cerca de 20 ms.

Ferramentas recentes: