4. Objects (Objets)
Une structure d'objet est représentée comme une paire d'accolades entourant zéro ou plusieurs paires nom/valeur (ou membres). Un nom est une chaîne. Chaque nom est suivi de deux-points qui séparent le nom de la valeur. Une virgule sépare une valeur du nom suivant. Les noms dans un objet DEVRAIENT être uniques.
object = begin-object [ member *( value-separator member ) ]
end-object
member = string name-separator value
Un objet dont les noms sont tous uniques est interopérable, car toutes les implémentations logicielles qui reçoivent cet objet seront d'accord sur les correspondances nom-valeur. Lorsque les noms dans un objet ne sont pas uniques, le comportement du logiciel qui reçoit un tel objet est imprévisible. De nombreuses implémentations ne signalent que la dernière paire nom/valeur. D'autres implémentations signalent une erreur ou ne parviennent pas à analyser l'objet, et certaines implémentations signalent toutes les paires nom/valeur, y compris les doublons.
On a observé que les bibliothèques d'analyse JSON diffèrent quant à savoir si elles rendent l'ordre des membres d'objet visible au logiciel appelant. Les implémentations dont le comportement ne dépend pas de l'ordre des membres seront interopérables, car elles ne seront pas affectées par ces différences.