“SyntaxError:意外的令牌:”在控制台中输入{“a”:“”,“b”:“”} json时

时间:2012-05-10 16:04:58

标签: javascript json syntax-error object-literal

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

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

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

2 个答案:

答案 0 :(得分:9)

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

所以这个:

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

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

您可以像这样使用JSON:

  1. 您将其放在.json文件
  2. 您可以通过Ajax作为字符串检索它,
  3. 您将字符串解析为JSON.parse()的对象。
  4. (例如,您也可以将JSON数据保存为变量中的字符串,或者保存在localStorage对象中。无论哪种方式,对于JavaScript,JSON数据应始终作为字符串值。)< / p>

答案 1 :(得分:7)

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

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

> x
Object
  a: ""
  b: ""
  __proto__: Object