3

RFC 4627 セクション 2.2 によると: 2.2。オブジェクト

オブジェクト構造は、0 個以上の名前と値のペア (またはメンバー) を囲む中かっこのペアとして表されます。名前は文字列です。各名前の後にコロンを 1 つ付けて、名前と値を区切ります。単一のコンマは、値とそれに続く名前を区切ります。 オブジェクト内の名前は一意である必要があります。

しかし、「ユニークであるべき」は業界のベストプラクティスに準拠しているのでしょうか? ほとんどの JSON エンコーダー/デコーダーは「一意である必要があります」を強制しますか? JSONlint.com は「一意でなければならない」ことを強制します。

たとえば、{ "foo":"value1", "foo":"value2" } は有効な JSON を返します { "foo":"value2" }

2 番目の同じ名前は、同じ名前の最初のエントリを置き換えます。

4

2 に答える 2

2

RFC 4627 :

オブジェクト内の名前は一意である必要があります。

Douglas Crockford (著者)はそれについて次のように述べています。

これは RFC における最大の失敗でした。しなければならなかったはずです。

残念ながら、これを修復するには遅すぎます。

最近のecma json 標準では、rfc に準拠していて、重複した名前が含まれている可能性がある既存の json ドキュメントを無効にすることを避けるために、一意性は必要ありません。

つまり{ "foo":"value1", "foo":"value2" }、有効な json ですが、新しい json ドキュメントで重複した名前を使用することはお勧めしません。

パーサーが異なれば、動作も異なります (または動作が異なるように構成できます)。

于 2013-11-06T03:39:54.643 に答える