Ir para o conteúdo principal
Bethemesh

Gerar um JSON Schema

Analise um documento JSON e infira automaticamente tipos, propriedades, arrays e campos obrigatórios.

  • Área de transferência
  • Exportar
Automatizar

Integrar este widget

Personalize o resultado, verifique a pré-visualização e copie o código.

Pré-visualização

Tipo de código de integração

Código a copiar

Responsivo e redimensionado automaticamente pela Bethemesh.

Esta ferramenta foi útil?

Como funciona esta ferramenta?

Crie uma primeira versão de JSON Schema a partir de um documento JSON representativo. O gerador identifica tipos, objetos aninhados, listas e propriedades observadas para descrever uma estrutura reutilizável com draft 2020-12. O resultado é uma proposta a rever, não a descoberta automática de todas as regras API. Nenhum documento é enviado a um serviço: o navegador analisa a amostra e apresenta um esquema JSON para examinar, copiar ou exportar.

Strings tornam-se string, booleanos boolean e null null. Os inteiros observados distinguem-se dos outros números. Objetos produzem properties; arrays inferem items a partir de todos os elementos fornecidos, não apenas do primeiro. Variantes de tipos podem ser representadas por anyOf.

Combinam-se propriedades de objetos do mesmo array. Uma chave ausente em algumas entradas não é acrescentada a required; uma chave sempre presente é incluída. A regra reflete apenas a amostra. Uma resposta com um campo opcional no contrato real não permite adivinhar que possa ser omitido.

Os objetos usam additionalProperties: false, rejeitando chaves não observadas mesmo quando a aplicação as aceitaria. Reveja esta escolha antes de validar respostas futuras. Um array vazio não informa sobre elementos futuros: o esquema deixa a sua forma aberta em vez de inventar um tipo.

A inferência não deduz formatos de email, expressões regulares, limites numéricos ou listas exaustivas de valores. Uma data continua string. Observar 1 não prova minimum: 1 nem const: 1. Os números usam a representação do navegador; mantenha identificadores grandes como strings quando o contrato o determinar.

Como usar esta ferramenta

  1. Escolha uma amostra útil

    Cole JSON válido com a estrutura completa. Prefira dados anonimizados com formas relevantes a grandes volumes de valores repetidos.

  2. Gere e reveja propriedades

    Verifique tipos inferidos, required e objetos fechados. Um valor null é diferente de uma propriedade ausente.

  3. Complete e teste o contrato

    Acrescente formatos ou limites justificados e teste dados válidos e inválidos antes de integrar. A descarga contém um esquema JSON, não um módulo TypeScript.

Casos de uso

Esboçar um contrato de dados

Comece por uma resposta API ou ficheiro de troca e confronte a estrutura com a documentação de negócio. Acrescente restrições que a amostra não demonstra.

Identificar variantes de um array

Inclua campos omitidos, presentes e null para distinguir obrigatoriedade e tipos. Amostras variadas oferecem uma base mais representativa.

Preparar validação reutilizável

Use o esquema com um validador compatível com o draft e palavras-chave. A geração não instala verificações automáticas na aplicação.

Exemplos

Inferir inteiro e booleano

id torna-se integer e active boolean. Ambos são obrigatórios por aparecerem no objeto; additionalProperties rejeita chaves adicionais.

Entrada

{"id":1,"active":true}

Resultado

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "id": {
      "type": "integer"
    },
    "active": {
      "type": "boolean"
    }
  },
  "required": [
    "id",
    "active"
  ],
  "additionalProperties": false
}

Considerar todos os elementos do array

id aparece nos dois objetos e mantém-se obrigatório. name surge só no segundo: é uma propriedade conhecida, mas opcional.

Entrada

[{"id":1},{"id":2,"name":"Ada"}]

Resultado

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "id": {
        "type": "integer"
      },
      "name": {
        "type": "string"
      }
    },
    "required": [
      "id"
    ],
    "additionalProperties": false
  }
}

Dicas e boas práticas

  • Não transforme um valor observado numa constante de negócio sem outras provas. Uma amostra não documenta todos os valores permitidos.
  • Teste uma resposta com um campo novo para decidir se additionalProperties: false se adequa à política de compatibilidade.
  • Mantenha propriedades omitidas e valores null em casos de teste separados: exprimem regras diferentes.
  • Use JSON para TypeScript se também precisar de interfaces TypeScript ou esquemas Zod, em vez de copiar estruturas manualmente.

Fontes e referências

Perguntas frequentes

É analisado apenas o primeiro elemento do array?

Não. Todos os elementos fornecidos participam. As propriedades combinam-se e as ausências observadas influenciam required. Continua a ser análise de amostras, não previsão de dados futuros desconhecidos.

Porque é obrigatório um campo opcional da minha API?

Nunca faltou nas amostras relevantes. Retire-o de required segundo o contrato real ou acrescente um objeto representativo que omita a chave.

Porque são rejeitados campos adicionais?

Os objetos gerados estão fechados com additionalProperties: false. Altere a regra se permitir novas propriedades, decidindo explicitamente antes de validar dados em evolução.

O resultado garante a validade de todos os dados?

Não. Descreve formas observadas e exige revisão de negócio. Acrescente restrições pertinentes e use um validador compatível com o draft e as palavras-chave utilizadas.

Ferramentas relacionadas

Ferramentas semelhantes ou complementares a esta.

Ferramentas semelhantes

Valide um documento JSON com um esquema e localize precisamente cada erro.

DesenvolvimentoEm destaqueUtilizar esta ferramenta

Formate, minifique e valide um documento JSON para o tornar mais legível ou compacto.

DesenvolvimentoEm destaqueUtilizar esta ferramenta