120

この投稿の議論に従って: json-conversion-in-javascript

4

5 に答える 5

144

はい、配列はトップレベルの JSON テキストとして正当です。

JSONを定義する 4 つの標準ドキュメントがあります。どのトップレベル要素を許可するかは異なりますが、すべてオブジェクトまたは配列をトップレベル要素として許可します。

  • RFC 4627:オブジェクトまたは配列。
    「JSON テキストはシリアル化されたオブジェクトまたは配列です。」
  • RFC 7159、RFC8259:任意の JSON 値。
    「JSON テキストはシリアル化された値です。JSON の特定の以前の仕様では、JSON テキストがオブジェクトまたは配列になるように制約されていることに注意してください。」第2節
  • ECMA-404:任意の JSON 値。
    「JSON テキストは、JSON 値の文法に準拠する Unicode コード ポイントから形成された一連のトークンです。」
于 2010-09-30T17:44:06.753 に答える
67

はい。ただし、 JSONハイジャックが原因で、一部のシナリオでは代わりにルートをオブジェクトにすることを検討する必要があります。これは、JavaScriptの配列コンストラクターのオーバーライドに基づく情報開示の脆弱性です。

于 2010-09-30T17:56:50.493 に答える
5

これは ECMAScript 仕様によるものです。

JSONText :
    JSON値

JSONValue :
    JSONNullLiteral
    JSONBooleanLiteral
    JSONObject
    JSONArray
    JSON文字列
    JSON番号
于 2010-09-30T17:45:18.933 に答える
2

他のコメントに見られるように、いくつかの混乱があります。"application/json" メディア タイプでは、 JSON RFCに従って、JSON テキストのトップレベルでオブジェクトまたは配列のみが許可されます。ただし、パーサーの場合、ECMAScript 仕様に見られるように、任意の JSON 値が受け入れられます。

更新: RFC 4627 は古くなっています。新しい RFC では、トップレベルで単純な値も許可されています。(ありがとう、Matthias Dieter Wallnöfer.)

于 2012-06-21T21:38:41.983 に答える
2

はい、できます。入れる[{}]

于 2010-09-30T17:45:12.523 に答える