4. Objects (Objekte)
Eine Objektstruktur wird als Paar geschweifte Klammern dargestellt, die null oder mehr Name/Wert-Paare (oder Mitglieder) umschließen. Ein Name ist ein String. Jedem Namen folgt ein Doppelpunkt, der den Namen vom Wert trennt. Ein Komma trennt einen Wert vom nachfolgenden Namen. Die Namen innerhalb eines Objekts SOLLTEN eindeutig sein.
object = begin-object [ member *( value-separator member ) ]
end-object
member = string name-separator value
Ein Objekt, dessen Namen alle eindeutig sind, ist interoperabel, da alle Softwareimplementierungen, die dieses Objekt empfangen, über die Name-Wert-Zuordnungen übereinstimmen. Wenn die Namen innerhalb eines Objekts nicht eindeutig sind, ist das Verhalten von Software, die ein solches Objekt empfängt, unvorhersehbar. Viele Implementierungen melden nur das letzte Name/Wert-Paar. Andere Implementierungen melden einen Fehler oder können das Objekt nicht parsen, und einige Implementierungen melden alle Name/Wert-Paare, einschließlich Duplikate.
Es wurde beobachtet, dass sich JSON-Parsing-Bibliotheken darin unterscheiden, ob sie die Reihenfolge der Objektmitglieder für die aufrufende Software sichtbar machen. Implementierungen, deren Verhalten nicht von der Reihenfolge der Mitglieder abhängt, werden interoperabel sein, da sie von diesen Unterschieden nicht betroffen sind.