メインコンテンツまでスキップ

4. Objects (オブジェクト)

オブジェクト構造は, 0個以上の名前/値ペア (またはメンバー) を囲む一対の中括弧として表されます。名前は文字列です。各名前の後にはコロンが続き, 名前と値を区切ります。カンマは値と後続の名前を区切ります。オブジェクト内の名前は一意であるべきです (SHOULD)。

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

member = string name-separator value

すべての名前が一意であるオブジェクトは相互運用可能です。このようなオブジェクトを受信するすべてのソフトウェア実装は, 名前-値マッピングについて一致するためです。オブジェクト内の名前が一意でない場合, そのようなオブジェクトを受信するソフトウェアの動作は予測不可能です。多くの実装は最後の名前/値ペアのみを報告します。他の実装はエラーを報告するか, オブジェクトを解析できません。また, 一部の実装は重複を含むすべての名前/値ペアを報告します。

JSON解析ライブラリは, オブジェクトメンバーの順序を呼び出し元ソフトウェアに可視化するかどうかについて違いがあることが観察されています。メンバーの順序に依存しない動作を持つ実装は相互運用可能です。これらの違いの影響を受けないためです。