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
Gerador de cards CSS
Crie um card com seu título, texto e link opcional. Ajuste cores, borda, espaçamento, sombra e efeito ao passar o mouse. Depois copie ou baixe o HTML e o CSS.
Contador de FPS
Meça o FPS do navegador com requestAnimationFrame: suavização, taxa de quadros mínima e máxima, limite de alerta e gráfico opcional. Roda localmente, sem upload nem API.
Gerador de textura de ruído
Gere uma textura de ruído em SVG que se repete sem emendas, com opacidade, frequência do grão, tipo de ruído e cor de fundo ajustáveis, e copie o CSS já pronto.
Gerador de Configuração Webpack
Crie um webpack.config.js para webpack 5 a partir de um formulário curto: defina o entry, a pasta de saída e o modo, e ative TypeScript, Babel, um loader CSS, HtmlWebpackPlugin e um servidor de desenvolvimento.
Conversor de Tamanho de Arquivo
Converta entre bytes, KB, MB, GB, TB e as unidades binárias IEC (KiB, MiB, GiB, TiB), combinando decimal e binário como preferir.
Desofuscador de JavaScript
Desofusque JavaScript minificado ou empacotado com renomeação de variáveis, decodificação de arrays de strings, reversão de achatamento de fluxo de controle e embelezamento.
Ferramenta disponível em outros idiomas
- Generator schematów JSON [PL]
- JSON-schemagenerator [SV]
- JSONスキーマジェネレーター [JA]
- เครื่องมือสร้าง JSON Schema [TH]
- JSON-Schema-Generator [DE]
- JSON 스키마 생성기 [KO]
- Generador de Esquema JSON [ES]
- Trình tạo JSON Schema [VI]
- مولّد مخطط JSON [AR]
- Generator JSON Schema [ID]
- JSON-schemagenerator [NL]
- Générateur de schéma JSON [FR]
- JSON Schema Generator [EN]
- Generatore di JSON Schema [IT]
- Генератор JSON-схем [RU]
- JSON Şema Oluşturucu [TR]
- JSON 模式生成器 [ZH]