Saltar para o conteúdo
4all.tools

Valide JSON com um esquema JSON

Verifique um documento JSON estrito com um subconjunto local e limitado de JSON Schema draft-07.

Espaço de trabalho da ferramenta

Validar um documento JSON com um esquema

É necessário JavaScript para executar esta ferramenta local de validação.

Insira um objeto JSON com o subconjunto aceito do draft-07.

0 / 100.000 unidades de código UTF-16

Insira o documento JSON que será validado pelo esquema.

0 / 250.000 unidades de código UTF-16

A validação é executada localmente no seu navegador. Nenhuma entrada é enviada a um servidor.

Ações de validação

Insira um esquema e um documento JSON; depois, escolha Validar.

Keywords aceitas, referências e limites

Sobre este validador

Esta ferramenta aceita esquemas objeto JSON que declarem http://json-schema.org/draft-07/schema#. Ela implementa um subconjunto do draft-07.

Keywords aceitas

$schema, title, description, type, properties, required, items, additionalProperties, enum, const, minimum, maximum, exclusiveMinimum, exclusiveMaximum, minLength, maxLength e pattern.

Keywords não aceitas

As demais keywords são rejeitadas, incluindo $ref, definitions, format, allOf, anyOf, oneOf, not, dependencies e keywords condicionais.

Os padrões usam uma gramática restrita: letras e dígitos ASCII, pontuação regex escapada, classes de caracteres simples, âncoras de início/fim e no máximo um quantificador ? ou {mínimo,máximo} (máximo 32).

Os esquemas nunca são baixados. Referências remotas como $ref não são seguidas e não são aceitas.

Limites de recursos

Esquema: 100.000 unidades de código UTF-16; profundidade do parser 60, 5.000 nós, 1.000.000 unidades de trabalho do parser e 100 diagnósticos. O preflight permite 5.000 visitas estruturais, profundidade 40, 5.000 nomes, 50 padrões de até 128 unidades cada e 100 membros por enum.

Documento: 250.000 unidades de código UTF-16; profundidade do parser 100, 25.000 nós, 1.000.000 unidades de trabalho do parser e 100 diagnósticos. Strings verificadas com pattern têm limite de 10.000 unidades de código.

A validação completa tem 5.000.000 unidades de trabalho, 8.192 unidades de código variável por diagnóstico e limite de 8 segundos. A interface não permite aumentar esses limites.

Valide um documento com um esquema

Insira um objeto JSON Schema em Esquema JSON e o valor JSON a verificar em Documento JSON; depois, escolha Validar. Primeiro, as duas entradas são analisadas como JSON estrito, o esquema completo é verificado e, então, o documento é avaliado. O primeiro erro é exibido; esta primeira versão não lista todas as incompatibilidades. Um resultado positivo significa que o documento é válido para o subconjunto aceito por esta ferramenta, não para todos os recursos do draft-07.

Escolha Carregar exemplo para preencher os dois editores com este par funcional. Você pode alterá-lo; a validação só começa quando escolher Validar.

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "name": { "type": "string", "minLength": 1 },
    "active": { "type": "boolean" }
  },
  "required": ["name"],
  "additionalProperties": false
}
{
  "name": "Ada",
  "active": true
}

Subconjunto aceito do draft-07

O esquema raiz deve ser um objeto JSON e declarar em $schema o valor exato http://json-schema.org/draft-07/schema#. Estas keywords e formas são aceitas:

  • $schema, title e description com valores de texto.
  • type como um tipo ou uma lista não vazia e sem duplicatas: null, boolean, object, array, number, integer ou string.
  • properties como um objeto cujos valores são esquemas; required como uma lista de nomes de propriedades únicos; e additionalProperties como booleano ou esquema.
  • items como um esquema. Listas de esquemas em items não são aceitas.
  • enum como uma lista não vazia de até 100 valores JSON e const como qualquer valor JSON.
  • minimum, maximum, exclusiveMinimum e exclusiveMaximum como números finitos.
  • minLength e maxLength como inteiros não negativos. O comprimento de texto é contado em pontos de código Unicode.
  • pattern como texto que use a gramática restrita descrita abaixo.

properties descreve como verificar uma propriedade quando ela existe; não a torna obrigatória. Apenas os nomes em required precisam estar presentes. Uma propriedade ausente e uma propriedade com valor null são diferentes: required verifica a presença e type verifica o valor. additionalProperties aceita, rejeita ou verifica outras propriedades; nunca as remove ou altera no documento.

Keywords e padrões rejeitados

Qualquer keyword fora da lista acima é rejeitada antes da validação do documento. Isso inclui $ref, mesmo quando aponta para uma definição local, além de definitions, format, allOf, anyOf, oneOf, not, dependencies e as keywords condicionais if, then e else. Referências não são resolvidas, e a ferramenta nunca baixa um esquema nem consulta um serviço remoto.

Os padrões são limitados a letras e dígitos ASCII, pontuação de expressão regular escapada, classes de caracteres simples e ^ ou $ apenas no início ou no fim. Cada padrão aceita no máximo um quantificador ? ou um quantificador limitado {mínimo,máximo}, com máximo de 32. Outros recursos de expressão regular são rejeitados. Um padrão pode ter até 128 unidades de código, e uma string do documento verificada por padrão pode ter até 10.000 unidades.

JSON estrito e precisão numérica

Os dois editores exigem JSON estrito. Comentários, vírgulas finais, chaves de objeto duplicadas e conteúdo após o valor são erros. Números que não podem ser representados com segurança como números JavaScript são rejeitados e não geram um resultado de conformidade. A validação usa o valor JSON analisado; não é possível distinguir grafias numéricas depois que a precisão se perde.

Limites de entrada e operação

O editor de esquema aceita até 100.000 unidades de código UTF-16. A análise do esquema é limitada a profundidade 60, 5.000 nós JSON, 1.000.000 unidades de trabalho do parser e 100 diagnósticos. O preflight permite 5.000 visitas estruturais, profundidade 40, 5.000 nomes entre properties e required, 50 padrões de até 128 unidades de código cada e 100 valores em cada enum.

O editor do documento aceita até 250.000 unidades de código UTF-16. A análise do documento é limitada a profundidade 100, 25.000 nós JSON, 1.000.000 unidades de trabalho do parser e 100 diagnósticos. Strings verificadas com pattern aceitam até 10.000 unidades de código. A validação completa tem 5.000.000 unidades de trabalho, 8.192 unidades de código variável por diagnóstico e um limite de 8 segundos. Ao atingir um limite, a validação para sem declarar o documento válido ou não conforme.

Processamento local

A análise e a validação são executadas em um Worker local no navegador. Nenhuma entrada é enviada ao servidor da aplicação e esquemas não são baixados. O texto não é armazenado na URL, em cookies nem no armazenamento do navegador. Ao editar uma entrada, o resultado anterior é removido e o trabalho associado ao texto antigo é interrompido. Cancelar interrompe uma operação ativa e mantém as duas entradas; Limpar ambos as apaga explicitamente.