web-dev-qa-db-ja.com

JSONキーは引用符で囲む必要がありますか?

例:次のコードは JSON Spec に対して有効ですか?

{
    precision: "Zip"
}

または、常に次の構文を使用する必要がありますか? (もしそうなら、なぜ?)

{
    "precision": "Zip"
}

JSON仕様でこれについて何かを実際に見つけたことはありません。例ではキーの周りに引用符を使用していますが。

212

はい、引用符が必要です。これは、JavaScriptを予約済みのキーワード、つまり{for:"foo"}に別のエスケープメソッドを持たせることを簡単にするためです。

131
cobbal

キーとして文字列を使用するのは正しいことです。以下はRFC 4627-JavaScript Object Notation(JSON)のapplication/jsonメディアタイプからの抜粋です

2.2。オブジェクト

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

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

member = string name-separator value

[...]

2.5。ひも

文字列の表現は、プログラミング言語のCファミリで使用される規則に似ています。文字列は引用符で始まり、引用符で終わります。 [...]

string = quotation-mark *char quotation-mark

quotation-mark = %x22 ; "

RFC全体を読む こちら .

130

2.2。オブジェクトから

オブジェクト構造は、0個以上の名前/値のペア(またはメンバー)を囲む中括弧のペアとして表されます。名前は文字列です。

および2.5。文字列

文字列は引用符で始まり、引用符で終わります。

だから私は標準に従ってと言うでしょう:はい、あなたは常にキーを引用する必要があります(ただし、一部のパーサーはより寛容かもしれませんが)

12
Cebjyre

はい、引用符は必須です。 http://json.org/ 言う:

string
    ""
    " chars "
6
lutz