Gerador de Esquema JSON
Cole uma ou várias amostras JSON e o gerador infere um Esquema JSON que você pode usar para validar novas cargas. Detecta tipos, marca campos como obrigatórios quando aparecem em todas as amostras, infere enums quando os valores são extraídos de um pequeno conjunto fechado e produz uma saída conforme o rascunho do Esquema JSON 2020-12.
Como gerar um Esquema JSON
-
1
Cole documentos de amostra
Uma ou várias cargas reais, quanto mais variedade, mais preciso será o esquema inferido.
-
2
Escolha o rascunho
Rascunho 2020-12 (atual), rascunho 07 (amplamente suportado) ou rascunho 04 (legado OpenAPI).
-
3
Ajuste a inferência
Ative a inferência de enum, estratégia de campos obrigatórios (interseção vs união) e se deve marcar todos os campos como `obrigatórios` quando apenas uma amostra é fornecida.
-
4
Gerar
O esquema é emitido com `$schema`, `title`, `type`, `properties` e `$ref`s aninhados para sub-objetos repetidos.
O que a inferência faz bem
- Tipos: string, número, inteiro, booleano, nulo, array, objeto.
- Nulidade: um campo que é
nuloem uma amostra e uma string em outra se torna["string", "null"]. - Itens de array: arrays homogêneos produzem um único esquema de
items; arrays heterogêneos produzemprefixItems. - Enumerações (enum): se todos os valores observados são de um pequeno conjunto (configurável, padrão 10 valores distintos), emite um
enum. - Obrigatório: com várias amostras, a interseção de chaves se torna
obrigatório; com uma amostra, todas as chaves são obrigatórias, a menos que você opte por não incluir. - Formatos: strings que correspondem a datas ISO-8601, e-mails ou URIs recebem um
formatoinferido.
O que a inferência não pode saber
- Intenção vs exemplo: uma amostra
age: 25inferetype: integer, mas não pode saber que você também aceitanulo. Passe várias amostras que cubram casos extremos. - Restrições:
minLength,maximum,pattern, você precisa adicionar isso manualmente. A inferência não adivinha limites a partir das amostras. - Lógica de negócios: “exatamente um desses três campos deve ser definido” requer
oneOf, não é inferível. - Referências: o gerador emite um esquema plano. Se você quiser fatorar formas repetidas em
$defs, faça isso após a geração.
Exemplo de saída
A partir de uma única amostra:
{ "name": "Alice", "age": 30, "tags": ["admin", "user"] }
O esquema inferido (rascunho 2020-12):
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"name": { "type": "string" },
"age": { "type": "integer" },
"tags": { "type": "array", "items": { "type": "string" } }
},
"required": ["name", "age", "tags"]
}
Erros comuns
- Inferindo a partir de uma amostra. O esquema ficará superajustado, cada campo se torna obrigatório, sem tolerância a nulos. Sempre forneça pelo menos 5-10 amostras variadas.
- Usando
integerquando você quis dizernumber. Se alguma amostra tiver um decimal, o tipo inferido se tornanumber; se todas forem inteiras, se tornainteger. Para campos que podem ser ambos, inclua uma amostra decimal. - Esquecendo campos opcionais. Um campo presente em 4 de 5 amostras, mas ausente em 1, se torna opcional, intencional. Se todas as 5 amostras incluírem, o esquema o marcará como obrigatório, mesmo que seja realmente opcional na sua API.
Perguntas frequentes
Quanto mais, melhor, mas 5-10 amostras variadas geralmente produzem um esquema razoável. Com uma amostra, cada campo se torna obrigatório e a nulidade não pode ser inferida, sempre forneça várias variantes se puder.
Rascunho 2020-12 por padrão. Rascunhos 07 e 04 estão disponíveis para compatibilidade com OpenAPI 3.0 (que usa um subconjunto do rascunho 05/07).
Não. Inferir restrições sensatas a partir de amostras superajustaria o esquema. Adicione minLength, maximum, pattern etc. manualmente após a geração com base nas suas regras de negócios.
Sim. Se você colar um array JSON, o gerador trata cada elemento como uma amostra separada e produz um esquema descrevendo um elemento individual, não o array externo. Ative “tratar como contêiner de array” se você quiser a forma do array externo.
Ferramentas relacionadas
Referência da Tabela ASCII
Tabela ASCII completa de 0 a 127 com valores decimais, hexadecimais, octais e binários e notação de referência numérica HTML, incluindo NUL, LF e DEL.
Referência de Caracteres HTML
Lista pesquisável de entidades HTML, seus códigos nomeados e numéricos, e uma cópia com um clique para caracteres e símbolos especiais.
Referência de atalhos de teclado
Pesquise atalhos padrão documentados do VS Code, Chrome e Bash com GNU Readline no macOS, Windows e Linux.
Gerador de EditorConfig
Gere um arquivo .editorconfig com suas regras de estilo e tamanho de indentação, fim de linha, charset e espaços em branco para formatação consistente entre IDEs e editores.
Validador de Email
Valide um endereço de email: verificação de sintaxe RFC 5322, consulta de registro MX em tempo real, além de detalhes de parte local, domínio e comprimento. Nenhum email é enviado.
Formatador de HTML
Formate HTML localmente no navegador com indentação de dois ou quatro espaços. O HTML não é enviado nem validado.
Ferramenta disponível em outros idiomas
- Trình tạo JSON Schema [VI]
- مولّد مخطط JSON [AR]
- Générateur de schéma JSON [FR]
- Generator JSON Schema [ID]
- JSON-Schema-Generator [DE]
- JSON 스키마 생성기 [KO]
- JSON-schemagenerator [SV]
- JSON-schemagenerator [NL]
- เครื่องมือสร้าง JSON Schema [TH]
- Generator schematów JSON [PL]
- JSONスキーマジェネレーター [JA]
- Generador de Esquema JSON [ES]
- JSON Schema Generator [EN]
- Generatore di JSON Schema [IT]
- Генератор JSON-схем [RU]
- JSON Şema Oluşturucu [TR]
- JSON 模式生成器 [ZH]