8

在尝试评估以下内容时,我在 chrome 和 firefox 开发人员工具中都遇到了错误:

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

jsonlint.com 告诉我它是有效的。将此代码放入实际的 javascript 文件中并运行它可以正常工作。仅当我在 chrome 开发人员工具或 firebug 的控制台中运行此程序时,才会出现这种奇怪现象。这里发生了什么?

4

2 回答 2

9

您不能在控制台中执行 JSON。JavaScript 引擎认为它是一个带有标签的块语句。

所以这:

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

被解释为块语句。"a":部分被解释为一个标签。该"", "b" 部分被解释为一个表达式(两个字符串文字和中间的逗号运算符)。现在第二个:字符在该位置无效......接下来,将"a"被解释为字符串文字,并且:在该位置无效。

您可以像这样使用 JSON:

  1. 你把它放在一个.json文件里,
  2. 您通过 Ajax 将其作为字符串检索,
  3. 您将字符串解析为带有JSON.parse().

(例如,您还可以将 JSON 数据作为字符串保存在变量中或localStorage对象中。无论哪种方式,对于 JavaScript,JSON 数据都应始终以字符串值的形式出现。)

于 2012-05-10T16:10:03.870 回答
7

实际上,对于一次性测试(我主要使用调试控制台),您可以输入 JSON 对象语法,但您必须将其分配给一个变量:

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

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