4. Objects (对象)
对象结构表示为一对花括号, 其中包围零个或多个名称/值对 (name/value pair, 或成员 (member)). 名称是字符串. 每个名称后跟一个冒号, 用来将名称与值分隔开. 单个逗号将一个值与后续名称分隔开. 对象内的名称 SHOULD 是唯一的.
object = begin-object [ member *( value-separator member ) ]
end-object
member = string name-separator value
如果一个对象中的名称全部唯一, 则它具有互操作性, 因为接收该对象的所有软件实现都会就名称-值映射 (name-value mapping) 达成一致. 当对象内的名称不唯一时, 接收此类对象的软件行为是不可预测的. 许多实现只报告最后一个名称/值对. 其他实现会报告错误或无法解析该对象, 还有一些实现会报告所有名称/值对, 包括重复项.
据观察, JSON 解析库在是否向调用软件暴露对象成员顺序方面存在差异. 行为不依赖成员顺序的实现具有互操作性, 因为它们不会受这些差异影响.