Quelle est la convention dans JSON pour empty vs. null?

Je sais que dans la plupart des scénarios de programmation, la préférence est pour les collections vides aux collections null quand il y a 0 éléments. Cependant, la plupart des langages qui consomment JSON (comme JavaScript) traiteront les listes/objets vides comme true et les null Comme false. Par exemple, cela serait à la fois vrai et un objet en JavaScript:

{
    "items_in_stock": {"widgets":10, "gadgets": 5}
}

Mais c'est aussi vrai:

{
    "items_in_stock": {}
}

Et ceci est faux:

{
    "items_in_stock": null
}

Existe-t-il une convention sur les objets/listes vides pour JSON? Et que dire de nombres, booléens et chaînes?

37
demandé sur rzrelyea 2012-03-08 19:10:29

2 réponses

Il est recommandé de renvoyer un tableau vide si le type de retour attendu est un tableau. Cela garantit que le récepteur du json peut traiter la valeur comme un tableau immédiatement et ne doit pas d'abord vérifier si elle est nulle. C'est la même chose avec les objets vides ({}). Les chaînes, les booléens et les entiers n'ont pas de forme 'vide' , donc il est correct d'utiliser des valeurs null.

Ne me croyez pas sur parole. Dans Joshua Blochs excellent livre "Java efficace" il décrit certains très bonnes pratiques de programmation générique (souvent applicables à d'autres langages de programmation). Renvoyer des collections vides au lieu de nulls est l'un d'entre eux. Voici un lien vers cette partie de son livre: http://jtechies.blogspot.nl/2012/07/item-43-return-empty-arrays-or.html

51
répondu koenpeters 2015-01-01 13:42:30

" JSON a une valeur spéciale appelée null qui peut être définie sur n'importe quel type de données, y compris les tableaux, les objets, les nombres et les types booléens."

" le concept vide JSON s'applique aux tableaux et aux objets...L'objet de données n'a pas de concept de listes vides. Par conséquent, aucune action n'est effectuée sur l'objet de données pour ces propriétés."

Voici ma source.

4
répondu 2012-03-08 15:14:01