Gerador e Validador de JSON Schema

Gere um JSON Schema a partir de uma amostra ou valide um documento JSON contra um, direto no seu navegador. Seus dados nunca saem do seu dispositivo.

A geração de schema e a validação com Ajv rodam localmente no seu navegador, então sua amostra JSON, schema e documento nunca são enviados.

Precisa de tipos TypeScript em vez disso? Experimente o JSON para TypeScript.

Sobre Gerador de JSON Schema

Este gerador de JSON Schema transforma uma amostra JSON em um JSON Schema pronto para uso, e o validador embutido verifica qualquer documento JSON contra um schema que você fornece. No modo Gerar, ele percorre sua amostra, infere tipos para objetos, arrays, strings, números, booleanos e null, unifica itens de array e pode marcar cada propriedade como obrigatória, definir additionalProperties como false e detectar formatos de string como email, date, date-time, uri e uuid. Escolha draft-07 ou 2020-12 para a saída. No modo Validar, ele executa o Ajv com allErrors e ajv-formats, depois lista cada falha com seu caminho de instância e mensagem. Foi feito para desenvolvedores de API, engenheiros de backend e qualquer pessoa que defina ou teste contratos JSON. Tudo roda no seu navegador, então a amostra e o schema que você cola permanecem no seu dispositivo.

Recursos

Como usar Gerador de JSON Schema

  1. Escolha Gerar para montar um schema, ou Validar para verificar um documento.
  2. Em Gerar, cole uma amostra JSON e ative as opções de obrigatório, additionalProperties e formato.
  3. Escolha draft-07 ou 2020-12, depois copie ou baixe o schema.json resultante.
  4. Em Validar, cole um JSON Schema à esquerda e um documento JSON à direita.
  5. Leia o selo válido/inválido e a lista de erros, cada um com um caminho de instância.

Exemplo

Entrada

{
  "id": 1,
  "name": "Ada",
  "email": "ada@example.com",
  "tags": ["a", "b"]
}

Saída

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "id": { "type": "integer" },
    "name": { "type": "string" },
    "email": { "type": "string", "format": "email" },
    "tags": { "type": "array", "items": { "type": "string" } }
  },
  "required": ["id", "name", "email", "tags"]
}

Com a inferência de obrigatório e de formato ativada, a amostra produz um schema draft-07.

Erros comuns e solução de problemas

Perguntas frequentes

Qual draft de JSON Schema o gerador usa?
Draft-07 por padrão, com uma opção para 2020-12. A escolha define a URL de dialeto $schema na saída e as pequenas diferenças entre os drafts; a estrutura inferida é, por outro lado, a mesma.
Como as propriedades obrigatórias são decididas ao gerar um schema?
Por padrão, nenhuma propriedade é marcada como obrigatória, então o schema aceita objetos parciais. Ative "Marcar todas as propriedades como obrigatórias" para adicionar cada chave de cada objeto ao seu array required.
Como o validador reporta os erros?
Ele executa o Ajv com allErrors ativado, então você obtém cada falha de uma vez. Cada erro mostra o caminho de instância JSON (como /items/0/id) e uma mensagem legível, incluindo chaves obrigatórias ausentes e propriedades adicionais inesperadas.
O gerador infere formatos de string como email ou date?
Sim, quando "Inferir formatos de string" está ativado. Ele verifica os valores de string da amostra contra padrões para email, date, date-time, uri e uuid e adiciona a palavra-chave format correspondente; valores que não correspondem a nenhum permanecem como strings comuns.
Como ele infere o schema para arrays?
Ele mescla os schemas de todos os elementos do array em um único schema items. Elementos de objeto mistos são mesclados propriedade por propriedade, uma chave ausente em qualquer elemento sai de required, e um array vazio vira items:{}.
Minha amostra JSON ou meu schema é enviado para algum lugar?
Não. A geração e a validação, incluindo o Ajv, rodam inteiramente no seu navegador, então a amostra, o schema e o documento que você cola são processados localmente e permanecem no seu dispositivo.

Ferramentas relacionadas

Todas as ferramentas de ArrayKit