在尝试评估以下内容时,我在 chrome 和 firefox 开发人员工具中都遇到了错误:
{
"a": "",
"b": ""
}
jsonlint.com 告诉我它是有效的。将此代码放入实际的 javascript 文件中并运行它可以正常工作。仅当我在 chrome 开发人员工具或 firebug 的控制台中运行此程序时,才会出现这种奇怪现象。这里发生了什么?
在尝试评估以下内容时,我在 chrome 和 firefox 开发人员工具中都遇到了错误:
{
"a": "",
"b": ""
}
jsonlint.com 告诉我它是有效的。将此代码放入实际的 javascript 文件中并运行它可以正常工作。仅当我在 chrome 开发人员工具或 firebug 的控制台中运行此程序时,才会出现这种奇怪现象。这里发生了什么?
您不能在控制台中执行 JSON。JavaScript 引擎认为它是一个带有标签的块语句。
所以这:
{
"a": "", "b": ""
}
被解释为块语句。该接下来,将"a":
部分被解释为一个标签。该"", "b"
部分被解释为一个表达式(两个字符串文字和中间的逗号运算符)。现在第二个:
字符在该位置无效......"a"
被解释为字符串文字,并且:
在该位置无效。
您可以像这样使用 JSON:
.json
文件里,JSON.parse()
.(例如,您还可以将 JSON 数据作为字符串保存在变量中或localStorage
对象中。无论哪种方式,对于 JavaScript,JSON 数据都应始终以字符串值的形式出现。)
实际上,对于一次性测试(我主要使用调试控制台),您可以输入 JSON 对象语法,但您必须将其分配给一个变量:
> var x ={
"a": "",
"b": ""
}
undefined
> x
Object
a: ""
b: ""
__proto__: Object