Pular para o conteudo principal
CuteJSON
↑↓ Navegar Enter Selecionar Esc Fechar

Como gerar um JSON Schema a partir de uma amostra real

Publicado 2 min de leitura Por Akash Kinkar Pandey

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.

Voltar a todos os posts