Um schema gerado a partir de um documento amostra descreve o que estava na amostra. E um ponto de partida, nao uma especificacao imposta de outro lugar, e esta ferramenta e construida tratando dessa forma em vez de implicar mais certeza do que os dados realmente suportam.
Usar o gerador de JSON Schema
Cole um documento, ou um array de varios registros, escolha um rascunho (2020-12 ou Draft 07), se detectar formatos de string, e se marcar chaves obrigatorias, depois pressione Gerar schema.
Dado
[
{"id": 1, "name": "a", "score": 1},
{"id": 2, "name": "b", "score": 1.5}
]
ambos os registros carregam id, name e score, entao todos tres aparecem
em required. id e um numero inteiro em cada registro e se torna
"integer". score tem uma fracao no segundo registro, 1.5, entao seu
tipo e o mais amplo "number" em vez de "integer", ja que realmente contem
valores nao inteiros.
Por que uma chave pode silenciosamente sair do required
Adicione um terceiro registro, {"id": 3, "name": "c"}, sem campo score,
e gere novamente: score nao e mais obrigatorio, enquanto id e name
permanecem obrigatorios. Uma chave so e marcada obrigatoria quando cada unico
registro no array a carrega. Um registro faltando um campo nao prova que o
campo e opcional em toda a sua API, mas prova que o schema nao pode
honestamente prometer que estara sempre la, entao ele se torna opcional. Essa
e a regra que o FAQ na pagina declara diretamente, ja que e o detalhe mais
provavel de surpreender alguem lendo o resultado.
Deteccao de formato
Um formato de string como uma data ou endereco de e-mail so e afirmado quando cada string nessa posicao em cada registro corresponde ao mesmo padrao. Isso e o que impede que um valor sortudo transforme um campo genuinamente de texto livre em algo que parece um formato de data estrito, que rejeitaria dados reais e validos no momento em que visse um valor que nao era realmente uma data.
O que isso nao pode saber
O gerador so tem os registros que voce colou. Ele nao pode ver os registros
que voce nao colou, entao um campo que sempre foi um numero positivo na sua
amostra nao voltara com um minimum a menos que voce adicione um, e um campo
tipo enum nao se tornara uma palavra-chave enum a menos que voce adicione.
Trate a saida como a forma que sua amostra prova, e alargue manualmente onde
voce sabe que os dados reais sao mais flexiveis.
Verificar o resultado
Cole o schema gerado e um documento no validador de JSON Schema para ver se ele realmente aceita o tipo de documentos que voce espera.