Gerador de JSON Schema

Gerar automaticamente definições JSON Schema em conformidade com padrões a partir de dados JSON

Entrada JSON
Linhas: 1 | Caracteres: 0
Saída JSON Schema
// O JSON Schema será gerado automaticamente
Propriedades: 0 | Linhas: 1

Opções de configuração

Schema ID
Definir um identificador único para o Schema, tipicamente em formato URI, usado para referenciar e identificar Schema em grandes sistemas
Todos os campos obrigatórios
Quando habilitado, todas as propriedades são adicionadas ao array required, significando que esses campos devem existir nos dados
Adicionar valores padrão
Gerar automaticamente propriedade default baseada nos valores reais no JSON exemplo, útil para arquivos de configuração
Adicionar descrições de campo
Adicionar automaticamente campo description para cada propriedade, descrevendo tipo de dados e origem, útil para documentação
Modo estrito
Habilitar additionalProperties: false para proibir propriedades extras não definidas, garantindo consistência estrita da estrutura de dados

O que é JSON Schema?

JSON Schema é uma especificação para descrever e validar estruturas de dados JSON. Define regras para estrutura, tipos de dados, restrições e é amplamente usado para validação de API, validação de formulários, verificação de arquivos de configuração.

Com JSON Schema, você pode:

  • Validação de dados: Verificar se os dados JSON correspondem ao formato e restrições esperados
  • Geração de documentação: Gerar automaticamente documentação de API e definições de tipos
  • Inteligência de código: Obter autocompletar inteligente e verificação de tipos em IDEs
  • Testes automatizados: Validar automaticamente formato de dados de resposta em testes

Esta ferramenta suporta a especificação JSON Schema Draft-07, inferindo inteligentemente objetos aninhados, tipos de array, valores enum e outras estruturas complexas.

Como usar

  1. Cole dados JSON na caixa de entrada esquerda ou clique em Exemplo para carregar dados de exemplo
  2. Configure opções: defina Schema ID, escolha se todos os campos são obrigatórios, adicione valores padrão, etc.
  3. A definição JSON Schema correspondente é gerada automaticamente à direita
  4. Clique em Copiar para copiar o Schema gerado para a área de transferência
  5. Use o Schema para validação de API, validação de formulários ou verificação de arquivos de configuração

Exemplos

Schema de objeto simples

输入 JSON:
{
  "name": "张三",
  "age": 28,
  "isActive": true
}

输出 JSON Schema:
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "description": "Object with 3 properties",
  "properties": {
    "name": {
      "type": "string",
      "description": "String value"
    },
    "age": {
      "type": "integer",
      "description": "Number value"
    },
    "isActive": {
      "type": "boolean",
      "description": "Boolean value"
    }
  },
  "required": ["name", "age", "isActive"]
}

Objetos aninhados e arrays

输入 JSON:
{
  "user": {
    "id": 1,
    "profile": {
      "avatar": "url",
      "skills": ["JS", "TS"]
    }
  }
}

输出 JSON Schema:
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "user": {
      "type": "object",
      "properties": {
        "id": { "type": "integer" },
        "profile": {
          "type": "object",
          "properties": {
            "avatar": { "type": "string" },
            "skills": {
              "type": "array",
              "items": { "type": "string" }
            }
          }
        }
      }
    }
  }
}

Exemplo de validação de dados

使用 Ajv 验证数据:

const Ajv = require('ajv');
const ajv = new Ajv();

const schema = { /* 生成的 Schema */ };
const validate = ajv.compile(schema);

const validData = { name: "李四", age: 25, isActive: false };
const invalidData = { name: "王五", age: "三十" };

console.log(validate(validData));    // true
console.log(validate(invalidData));  // false
console.log(validate.errors);        // 错误详情

Perguntas frequentes (FAQ)

Q: Quais são os casos de uso comuns para JSON Schema?

A: JSON Schema é principalmente usado para: validação de requisições/respostas de API, validação de dados de formulários, verificação de formato de arquivos de configuração, restrições de documentos de banco de dados, validação de dados de testes automatizados, configuração de autocompletar em IDE. É uma ferramenta importante para especificação de dados no desenvolvimento web moderno.

Q: Qual versão de Schema esta ferramenta gera?

A: Esta ferramenta gera Schema seguindo a especificação JSON Schema Draft-07, a versão mais amplamente suportada, compatível com a maioria das bibliotecas de validação e cadeias de ferramentas.

Q: Como tipos de array complexos são tratados?

A: A ferramenta analisa automaticamente a estrutura dos elementos do array. Se elementos são objetos, definição items é gerada; se tipos são inconsistentes, anyOf ou oneOf representa múltiplos tipos possíveis; arrays vazios geram definição items vazia.

Q: O que significa o campo required?

A: required é um array de strings listando nomes de propriedades que devem existir. Se uma propriedade está em required, não pode estar faltando durante validação. Propriedades não em required são opcionais.

Q: Como usar o Schema gerado em projetos?

A: Use bibliotecas de validação como Ajv, jsonschema para validação de dados. No Node.js: const Ajv = require('ajv'); const validate = new Ajv().compile(schema); const valid = validate(data);. Frameworks frontend como React, Vue têm componentes de validação de formulário que suportam JSON Schema.

Q: O que additionalProperties: false faz?

A: Esta configuração proíbe propriedades extras não definidas no Schema. Útil para cenários que precisam de controle estrito da estrutura de dados, prevenindo poluição acidental de campos, mas pode causar problemas de compatibilidade se muito restrito.

Q: Posso adicionar regras de validação personalizadas?

A: Sim, edite manualmente o Schema após geração para adicionar mais restrições. JSON Schema suporta palavras-chave de validação ricas: minimum/maximum (intervalo numérico), minLength/maxLength (comprimento de string), pattern (correspondência regex), enum (valores enumerados), format (formatos predefinidos como email, uri), etc.

Q: Como gerar JSON Schema a partir de tipos TypeScript?

A: Esta ferramenta infere Schema a partir de dados JSON. Para gerar a partir de tipos TypeScript, use ferramentas como typescript-json-schema, ou primeiro crie dados JSON de exemplo e depois use esta ferramenta.