web-dev-qa-db-ja.com

JSONキー名で有効/無効な文字は何ですか?

JavaScriptオブジェクトまたはJSON文字列のキー名に禁止文字はありますか?またはエスケープする必要のある文字は?

具体的には、キー名に「$」、「-」、およびスペースを使用します。

121
Christophe

いいえ。有効な文字列はすべて有効なキーです。エスケープする限り、"を持つこともできます。

{"The \"meaning\" of life":42}

おそらく、キーをオブジェクトフィールド名に関連付けようとするいくつかの言語にそのような値をロードする際に問題が発生する可能性があります。ただし、このようなケースは知りません。

149
Marcelo Cantos

問題を回避するには、JSONデータで次の文字をエスケープする必要があります

’一重引用符

" 見積もり

\バックスラッシュ

\ n\tのようなすべての制御文字

JSON Parser は、JSONの処理に役立ちます。

編集: OPのリンクが無効になっているため、これは置換JSONパーサーです

47
Arun Rana

キーを数字で開始することは有効ですが、意図しない問題が発生する可能性があることに言及する価値があります。

IE:

var testObject = {
    "1tile": "test value"
};
console.log(testObject.1tile); // fails, invalid syntax
console.log(testObject["1tile"]; // workaround
9
karns

UnicodeコードポイントU + D800からU + DFFFは避ける必要があります。これらはUTF-16サロゲートペア用に予約されているため、Unicodeでは invalid です。一部のJSONエンコーダー/デコーダーは、それらをU + FFFDに置き換えます。たとえば、 Go言語とそのJSONライブラリがそれらを処理する方法 を参照してください。

そのため、「\ uD800」から「\ uDFFF」のみ(サロゲートペアではない)を避けてください。

6
dolmen