Estou criando uma API que retorna resultados como JSON. Existe uma prática recomendada atual para saber se devemos incluir chaves no resultado quando o valor é nulo? Por exemplo:
{
"title":"Foo Bar",
"author":"Joe Blow",
"isbn":null
}
ou
{
"title":"Foo Bar",
"author":"Joe Blow"
}
Como o segundo é menor, estou inclinado a esse estilo, mas não tenho certeza se existe um estilo preferido ou não. Da perspectiva do cliente, parece que os dois estilos seriam funcionalmente equivalentes. Quaisquer prós ou contras de cada um?
javascript
json
null
undefined
Jjathman
fonte
fonte
Respostas:
O segundo economizará uma pequena quantidade de largura de banda, mas se essa fosse uma preocupação, você também usaria matrizes indexadas em vez de preencher o JSON com chaves. Claramente,
["Foo Bar","Joe Blow"]
é muito mais curto do que o que você tem agora.Em termos de usabilidade, não acho que faça diferença. Em ambos os casos,
if(json.isbn)
irá saltar para oelse
. Geralmente não há necessidade de distinguir entrenull
(nenhum valor) eundefined
(nenhum valor fornecido).fonte
!= null
(não estritamente pretendido)if( typeof onbeforepaste == "undefined")
para ver seonBeforePaste
há suporte. Mesmo assim, não faz nenhuma diferença real, já que você pode atribuir eventos o quanto quiser (eles simplesmente não farão nada se não forem suportados).Sou fã de sempre incluir null explicitamente, pois isso tem significado. A omissão de uma propriedade deixa ambiguidade.
Contanto que seu protocolo com o servidor seja acordado, qualquer um dos itens acima pode funcionar, mas se você passar nulos do servidor, acredito que isso torna suas APIs mais flexíveis posteriormente.
Também deve mencionar que a função hasOwnProperty do javascript oferece mais informações.
fonte
"propertyName" in objectFromJSON
vez deobjectFromJSON.hasOwnProperty("propertyName")
. Além disso, se você insiste em usarhasOwnProperty
, escrevaObject.prototype.hasOwnProperty.call(objectFromJSON, "propertyName")
por segurança.Em JavaScript,
null
significa algo muito diferente deundefined
.Sua saída JSON deve refletir o que é usado e necessário para seu aplicativo no contexto específico de uso dos dados JSON.
fonte
{"prop":undefined}
é diferente de{}
.Definitivamente, você deve incluí-lo se houver necessidade de distinguir entre
null
e,undefined
uma vez que eles têm dois significados diferentes em Javascript. Você pode pensarnull
que significa que a propriedade é desconhecida ou sem sentido eundefined
que significa que a propriedade não existe.Por outro lado, se não há necessidade de ninguém fazer essa distinção, vá em frente e deixe-a de fora.
fonte
Acho que não faz diferença quando você usa o JSON como um dado por trás da experiência do usuário.
A diferença aparece nos arquivos JSON-config, quando um usuário deve editar algo manualmente. Ao usar o primeiro exemplo, você dá ao usuário algumas dicas sobre a configuração.
fonte