【问题标题】:"SyntaxError: Unexpected token :" when inputting { "a": "", "b": "" } json in console"SyntaxError: Unexpected token :" 当在控制台输入 { "a": "", "b": "" } json
【发布时间】:2012-10-26 01:16:23
【问题描述】:

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

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

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

【问题讨论】:

  • 在 Firebug 中为我工作,或者至少,如果我将该对象分配给一个变量,它会解析它。完全单独使用该对象时,我得到了一个不同的错误。

标签: javascript json syntax-error object-literal


【解决方案1】:

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

所以这个:

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

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

你像这样使用 JSON:

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

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

【讨论】:

  • 谢谢您,先生,我为此快疯了。必须将它分配给一个变量才能让 chrome 显示它,a = {"foo": "bar"}
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 2015-08-07
    • 2017-07-14
    • 2023-01-07
    • 1970-01-01
    • 1970-01-01
    • 2011-12-17
    • 1970-01-01
    • 1970-01-01
    • 2016-06-02
    相关资源
    最近更新 更多