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 navegadorUse um objeto JSON Schema; referências que começam com #/ são resolvidas nesta página.
Cole dados para validar ou uma amostra representativa para gerar um esquema inicial.
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.
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.
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.
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.
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.
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.
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.