JSON で a のみがstring
ペアのキーになるのはなぜですか? null
、number
、bool
、 、object
などの他のタイプではないのはなぜarray
ですか? JSON が JavaScript と密接に関連していることを考えると、JavaScript の仕様 (ECMA-262) からその理由を結論付けることができますか? 私は JavaScript のまったくの初心者です。指摘していただけると助かります。
3 に答える
JSON 形式は、意図的に JavaScript オブジェクト リテラル構文と配列リテラル構文のサブセットに基づいており、JavaScript オブジェクトは文字列のみをキーとして持つことができます。したがって、JSON キーも文字列です。(OK、数値を JavaScript オブジェクト キーとして使用することはできますが、実際には文字列に変換されます。)
JSON のポイントは、さまざまな環境のさまざまなマシンで実行されているさまざまな言語で記述されたプログラム間で簡単に交換できるようにするためのデータの文字列表現であることに注意してください。オブジェクトをキーとして使用したい場合は、そのオブジェクトを何らかの方法で送信用の文字列として表す必要がありますが、受信言語はオブジェクトをキーとして使用できる必要があり、それはあなたが必要であることを意味しますこれらの言語の JSON の限定されたサブセットは混乱を招くだけです。
「JSON が JavaScript の一部であることを考えると」
いいえ、そうではありません。新しいブラウザーは、JSON を作成および解析するためのメソッドを提供しますが、JSON が文字列形式であり、JavaScript が文字列を実行できることを除いて、言語自体の一部ではありません。JSON は常に文字列表現です。JavaScript (または他の言語) 内で使用するオブジェクトを作成するには、解析する必要があります。JavaScript (または他の言語) は、結果のオブジェクトを他のオブジェクトと同じように扱います。
(また、JSON の特定のビットは、必ずしもキーをまったく持たないことに注意してください'["one","two","three"]'
。
JSON
表象の発見者によると、主な理由は、
JSONデータの解析中に、値 を参照するために使用しているキーが解析言語の予約語である可能性があり ます。
JSON表現の発見者である Douglas Crockford によるこの講演を参照してください。
例 :
{
id: 1234,
name: "foo",
do: "somthing"
}
JSONは言語間の互換性があるため、このデータ セットを多くの言語で使用できます。しかし、単語do
は のキーワードですJavascript
。解析中に構文エラーになります。
それが仕様が書かれた方法だからです。