Aller au contenu principal

4. Objects (Objets)

Une structure d'objet est représentée par une paire d'accolades entourant zéro ou plusieurs paires nom/valeur (ou membres). Un nom est une chaîne de caractères. Un seul deux-points vient après chaque nom, séparant le nom de la valeur. Une seule virgule sépare une valeur d'un nom suivant. Les noms au sein d'un objet devraient (SHOULD) être uniques.

object = begin-object [ member *( value-separator member ) ]
end-object

member = string name-separator value

Un objet dont tous les noms sont uniques est interopérable dans le sens où toutes les implémentations logicielles recevant cet objet s'accorderont sur les mappages nom-valeur. Lorsque les noms au sein d'un objet ne sont pas uniques, le comportement du logiciel qui reçoit un tel objet est imprévisible. De nombreuses implémentations ne rapportent que la dernière paire nom/valeur. D'autres implémentations rapportent une erreur ou échouent à analyser l'objet, et certaines implémentations rapportent toutes les paires nom/valeur, y compris les doublons.

Les bibliothèques d'analyse JSON ont été observées comme différant quant à savoir si elles rendent ou non l'ordre des membres de l'objet visible au logiciel appelant. Les implémentations dont le comportement ne dépend pas de l'ordre des membres seront interopérables dans le sens où elles ne seront pas affectées par ces différences.