Gerador de JSON Schema
Gere um rascunho de JSON Schema a partir de uma amostra JSON no navegador - sem conta, sem upload, sem CLI.
Sobre o Gerador de JSON Schema
Gere um rascunho de JSON Schema a partir de uma amostra JSON no navegador - sem conta, sem upload, sem CLI. Cole uma resposta de API ou, melhor, um array de registos. Objetos aninhados viram schemas aninhados, arrays sao tipados com cada elemento (nao so o primeiro), e chaves ausentes em alguns itens ficam opcionais (fora de required). JSON null vira um tipo nullable em vez de misturar-se com opcional. Formats sao inferidos quando os valores parecem email, uri, uuid, date ou date-time. Escolha Draft-07 ou 2020-12 e copie ou descarregue o schema. Combine com o Conversor JSON para TypeScript para interfaces a partir da mesma amostra, ou o Minificador JSON se o payload chegou minificado.
Como usar o Gerador de JSON Schema
- Cole JSON (um array de registos infere chaves opcionais melhor do que um unico objeto). Carregue um exemplo se quiser ver opcional vs nullable.
- Defina o titulo do schema e escolha Draft-07 (padrao) ou 2020-12. Decida se os objetos rejeitam ou permitem propriedades adicionais.
- Leia o relatorio: propriedades, obrigatorias, opcionais e formats. Os avisos marcam arrays vazios, objetos vazios, campos so-null e unioes mistas.
- Copie o JSON Schema ou descarregue um .schema.json. Use-o em AJV, OpenAPI ou validadores de CI.
- Nada e enviado a um servidor. JSON invalido reporta linha e coluna.
Exemplos de Gerador de JSON Schema
Chave opcional a partir de um array de registos
[{"sku":"A1","qty":2},{"sku":"B7","qty":1,"gift":true}] gera um schema de array cujos items exigem sku e qty, enquanto gift e opcional (nao esta em required).
Nullable vs opcional
Dois utilizadores em que email falta numa linha e note e null na outra emitem email como string opcional e note como type ["string","null"]. Chaves ausentes e JSON null continuam distintos.
Dicas de format em strings
Valores que parecem emails, URLs https, UUID, datas ISO ou date-time recebem format: email, uri, uuid, date ou date-time.
Contentores vazios
{"items":[],"meta":{}} tipa items como array com items vazio e meta como objeto sem properties. Os avisos pedem uma amostra mais rica.
Draft-07 vs 2020-12
Ambos os rascunhos partilham a mesma forma inferida. Draft-07 usa o URI classico que mais tooling espera. Mude para 2020-12 se a sua stack documentar esse dialeto.
Casos de uso comuns
- Rascunho de JSON Schema antes de existir OpenAPI / AsyncAPI
- Validar webhooks (Stripe, GitHub, Slack) em CI com AJV
- Transformar um fixture num contrato para testes
- Arrancar schemas para configs e feature flags
- Emparelhar com interfaces TypeScript a partir do mesmo JSON
Perguntas frequentes sobre o Gerador de JSON Schema
- Como gero um JSON Schema a partir de JSON de amostra?
- Cole uma amostra JSON, defina um titulo, escolha um draft e copie o schema. A geracao corre no navegador. Objetos e arrays sao percorridos por completo, e chaves ausentes em alguns itens sao omitidas de required.
- Qual e a diferenca entre opcional e nullable?
- Opcional significa que a chave faltava em alguns itens do array, por isso nao esta em required. Nullable significa que a chave estava presente e o valor era JSON null, por isso o type inclui null (por exemplo type: ["string","null"]). Este gerador nao os mistura salvo se a amostra mostrar ambos.
- Que rascunho de JSON Schema devo usar?
- Draft-07 continua a ser o mais compativel com validadores e editores. Use 2020-12 quando o seu tooling esperar esse $schema. As properties inferidas sao as mesmas.
- Porque items ou properties estao vazios?
- Arrays vazios nao tem elementos para inspecionar, por isso items e {}. Objetos vazios nao tem chaves, por isso properties esta vazio. Cole um exemplo com dados para tipos concretos.
- Os format de string sao sempre corretos?
- Sao heuristicas a partir da amostra (email, uri, uuid, date, date-time). Reveja-os antes de fixar um contrato de producao.
- O meu JSON e enviado?
- Nao. A geracao so corre nesta aba. A amostra nao sai do navegador.
- Em que difere do conversor JSON para TypeScript?
- Ambos percorrem o mesmo tipo de amostra. Esta pagina emite JSON Schema para validadores e rascunhos OpenAPI. O conversor TypeScript emite interfaces ou type aliases para o codigo. Use ambos a partir do mesmo payload se precisar de contrato e clientes tipados.
- additionalProperties: false rejeita chaves desconhecidas?
- Sim se deixar Rejeitar extras ativo. E util para contratos de API estritos. Mude para Permitir extras se os clientes puderem enviar campos que ainda nao viu na amostra.
Ferramentas relacionadas
Conversor de JSON para interface TypeScript
Conversor gratis de JSON para interface TypeScript. Cole um JSON, gere interfaces aninhadas ou type aliases, e separe chaves opcionais de JSON null. Nada e enviado.
Minificador e formatador de JSON
Minificador e formatador de JSON online grátis. Minifique JSON para reduzir payloads ou formate com indentação de 2 espaços - valida na hora, sem upload.
Testador JSONPath
Teste JSONPath online no navegador. Extraia um campo de JSON, experimente um filtro e copie caminhos normalizados - nada e enviado.
Comparador JSON Diff
Diff estrutural de JSON gratis no navegador. Compare dois documentos por chaves e valores - nao pela ordem das linhas. Nada e enviado.