4. Objects (对象)
对象结构表示为一对大括号,包围零个或多个名称/值对 (Name/Value Pairs)(或成员,Members)。名称是字符串。每个名称后跟一个冒号,将名称与值分隔开。单个逗号将一个值与后面的名称分隔开。对象内的名称应该 (SHOULD) 是唯一的。
object = begin-object [ member *( value-separator member ) ]
end-object
member = string name-separator value
接收到对象的实现如果其成员名称不唯一,其行为是不可预测的。许多实现仅报告最后的名称/值对。其他实现会报告错误或无法解析对象,某些实现会报告所有的名称/值对,包括重复项。
JSON解析库在处理重复名称方面存在差异。某些实现在生成器 (Generators) 或解析器 (Parsers) 内检测重复名称,某些则不检测。要确保互操作性最大化,名称在对象内应该 (SHOULD) 是唯一的。
JSON解析库已被观察到在是否使对象成员的顺序对调用软件可见方面存在差异。其行为不依赖于成员顺序的实现将具有互操作性,因为它们不会受到这些差异的影响。