Je crée une API qui renvoie les résultats au format JSON. Existe-t-il une meilleure pratique actuelle pour savoir si nous devons inclure des clés dans le résultat lorsque la valeur est nulle? Par exemple:
{
"title":"Foo Bar",
"author":"Joe Blow",
"isbn":null
}
ou
{
"title":"Foo Bar",
"author":"Joe Blow"
}
Comme le second est plus petit, je me penche vers ce style, mais je ne sais pas s'il existe un style préféré ou non. Du point de vue du client, il semble que les deux styles seraient fonctionnellement équivalents. Des avantages ou des inconvénients à chacun?
javascript
json
null
undefined
jjathman
la source
la source
Réponses:
Le second économisera une petite quantité de bande passante, mais si cela était un problème, vous utiliseriez également des tableaux indexés au lieu de remplir le JSON avec des clés. De toute évidence,
["Foo Bar","Joe Blow"]
c'est beaucoup plus court que ce que vous avez maintenant.En termes de convivialité, je ne pense pas que cela fasse de différence. Dans les deux cas,
if(json.isbn)
passera auelse
. Il n'est généralement pas nécessaire de faire la distinction entrenull
(aucune valeur) etundefined
(aucune valeur donnée).la source
!= null
(prévu non strict)if( typeof onbeforepaste == "undefined")
pour voir sionBeforePaste
est pris en charge. Même dans ce cas, cela ne fait aucune différence puisque vous pouvez attribuer des événements autant que vous le souhaitez (ils ne feront rien s'ils ne sont pas pris en charge).Je suis fan de toujours inclure explicitement null car cela a un sens. L'omission d'une propriété laisse une ambiguïté.
Tant que votre protocole avec le serveur est convenu, l'un des éléments ci-dessus peut fonctionner, mais si vous transmettez des valeurs nulles depuis le serveur, je pense que cela rendra vos API plus flexibles plus tard.
Il faut également mentionner que la fonction hasOwnProperty de javascript vous donne un aperçu supplémentaire.
la source
"propertyName" in objectFromJSON
au lieu deobjectFromJSON.hasOwnProperty("propertyName")
. De plus, si vous insistez pour utiliser,hasOwnProperty
écrivezObject.prototype.hasOwnProperty.call(objectFromJSON, "propertyName")
par sécurité.En JavaScript, cela
null
signifie quelque chose de très différent deundefined
.Votre sortie JSON doit refléter ce qui est utilisé et requis par votre application dans le contexte spécifique d'utilisation des données JSON.
la source
{"prop":undefined}
est différent de{}
.Vous devez absolument l'inclure s'il est nécessaire de faire la distinction entre
null
etundefined
puisque ceux-ci ont deux significations différentes en Javascript. Vous pouvez pensernull
que la propriété est inconnue ou dénuée de sens, etundefined
que la propriété n'existe pas.D'un autre côté, s'il n'est pas nécessaire que quiconque fasse cette distinction, allez-y et laissez-la de côté.
la source
Je pense que ce n'est pas une différence lorsque vous utilisez le JSON comme données derrière l'expérience utilisateur.
La différence apparaît dans les fichiers de configuration JSON, lorsqu'un utilisateur doit modifier quelque chose à la main. Lorsque vous utilisez le premier exemple, vous donnez à l'utilisateur un indice sur la configuration.
la source