1. O Que E JSON Schema
JSON Schema e uma especificacao que define um vocabulario para descrever e validar a estrutura de documentos JSON. Ele permite que voce descreva exatamente quais propriedades um objeto JSON deve conter, quais tipos cada valor deve ter, quais campos sao obrigatorios e muito mais.
O draft-07 e a versao mais amplamente adotada, suportada por bibliotecas em praticamente todas as linguagens de programacao populares. E usada em documentacao de APIs (OpenAPI/Swagger), sistemas de configuracao, validacao de entrada de dados e testes automatizados.
2. Estrutura de Um Schema Draft-07
Um JSON Schema e ele proprio um objeto JSON. As palavras-chave fundamentais incluem $schema (URI da versao), type (tipo do valor), properties (definicoes de campos), required (campos obrigatorios) e items (tipo dos elementos de arrays).
3. Tipos Suportados
O draft-07 suporta os seguintes tipos primitivos:
- string: qualquer texto, com restricoes opcionais de formato, padrao regex e tamanho.
- number: qualquer numero (inteiro ou decimal).
- integer: apenas numeros inteiros.
- boolean: true ou false.
- null: o valor null do JSON.
- object: objeto com propriedades definidas.
- array: lista de valores com tipo de elemento definido via items.
"JSON Schema e a base de contratos de API modernos. Ele transforma documentacao informal em regras maquina-verificaveis que tanto humanos quanto sistemas podem usar."
4. $defs e $ref Para Reutilizacao
Para evitar repeticao em schemas complexos, o draft-07 permite definir tipos reutilizaveis em $defs e referencia-los com $ref: "#/$defs/NomeDoTipo". O gerador desta ferramenta usa automaticamente $defs para objetos aninhados, mantendo o schema organizado e sem duplicacao.
5. Usando o Schema Para Validacao
Apos gerar o schema, voce pode usa-lo com bibliotecas de validacao como:
- JavaScript/Node.js: AJV (Ajv), @cfworker/json-schema
- Python: jsonschema, fastjsonschema
- Java: networknt/json-schema-validator
- Go: gojsonschema, santhosh-tekuri/jsonschema
- PHP: justinrainbow/json-schema
Em APIs REST, o schema pode ser integrado ao OpenAPI/Swagger para documentacao interativa e validacao automatica de requisicoes e respostas.
6. Perguntas Frequentes
O gerador suporta array na raiz do JSON?
Sim. Se o JSON for um array, o schema sera do tipo array com a definicao dos items baseada nos elementos do array.
Qual a diferenca entre draft-07 e versoes mais recentes como 2020-12?
O draft-07 e o mais amplamente suportado por ferramentas de terceiros. Versoes mais recentes (2019-09, 2020-12) introduzem funcionalidades avancadas como unevaluatedProperties e if/then/else, mas tem suporte menor em bibliotecas legadas.
Os dados sao enviados a algum servidor?
Nao. Toda a geracao ocorre localmente no navegador via JavaScript. Nenhum dado e transmitido ou armazenado.
O schema gerado pode ser usado diretamente em producao?
O schema e gerado como um ponto de partida. Recomenda-se revisar manualmente para adicionar restricoes mais especificas como minLength, pattern, enum e limites numericos conforme as regras de negocio da sua API.