8

以下を評価しようとすると、Chrome と Firefox の両方の開発者ツールでエラーが発生します。

{
    "a": "",
    "b": ""
}

jsonlint.com は、それが有効であることを教えてくれます。このコードを実際の JavaScript ファイルに入れて実行すると、問題なく動作します。奇妙さは、クロム開発者ツールまたはファイアバグのコンソールでこれを実行した場合にのみ表示されます。何が起きてる?

4

2 に答える 2

9

コンソールでJSONを実行することはできません。JavaScriptエンジンは、ラベル付きのブロックステートメントと見なします。

したがって、この:

{
    "a": "", "b": ""
}

ブロックステートメントとして解釈されます。パーツはラベルとして解釈されます"a":この"", "b" 部分は式として解釈されます(2つの文字列リテラルとその間のコンマ演算子)。ここで、2番目の:文字はその位置では無効です...次に、"a"は文字列リテラルとして解釈され、はその位置:では無効です。

次のようにJSONを操作します。

  1. あなたはそれを.jsonファイルに入れます、
  2. Ajaxを介して文字列として取得します。
  3. 文字列を。を使用してオブジェクトに解析しますJSON.parse()

(たとえば、JSONデータを文字列として変数またはlocalStorageオブジェクトに保持することもできます。いずれにしても、JavaScriptに関しては、JSONデータは常に文字列値として提供される必要があります。)

于 2012-05-10T16:10:03.870 に答える
7

実際、1 回限りのテスト (私の主なデバッグ コンソールの使用) では、 JSON オブジェクト構文を入力できますが、それを変数に割り当てる必要があります。

> var x ={
    "a": "",
    "b": ""
  }
undefined

> x
Object
  a: ""
  b: ""
  __proto__: Object
于 2012-10-25T17:16:23.340 に答える