使用单引号和双引号在JSON Key上有区别吗?

6

我在一个在线JS运行平台上运行了两段JavaScript代码:网站链接

pets = '{'pet_names':[{"name":"jack"},{"name":"john"},{"name":"joe"}]}';
var arr = JSON.parse(pets);
alert(arr.pet_names[1].name);

如果使用双引号 ("pet_names") 编写代码将是正确的,但如果使用单引号('pet_names') 则会提示错误:"Unexpected identifier"

pets = '{"pet_names":[{"name":"jack"},{"name":"john"},{"name":"joe"}]}';
var arr = JSON.parse(pets);
alert(arr.pet_names[1].name);

所以,为什么会发生这种情况呢?
2个回答

15

在JSON中,只有双引号是有效的。

您可以在JSON.org上找到标准。

值可以是双引号中的字符串,数字,true、false、null,或对象或数组。这些结构可以嵌套。

换句话说,不能使用单引号的字符串。


1
第一个没有起作用,因为您在尝试定义字符串文字时存在语法错误。
您可能想要:
pets = '{\'pet_names\':[{"name":"jack"},{"name":"john"},{"name":"joe"}]}';

请注意,引号已经被转义。
现在,如果您在JSON解析器中使用该字符串,仍会出现错误(SyntaxError: Unexpected token '),因为JSON中的键必须用双引号定义,使用单引号只适用于定义JavaScript对象字面量,这与JSON是分开的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接