使用单引号和双引号时,JSON Key有什么区别吗?

时间:2014-07-06 04:57:24

标签: javascript json double-quotes

我在在线JS运行平台上运行了两段javascript代码:Website Link

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

带双引号的代码(“pet_names”)可以,但使用单引号('pet_names')会提示错误:“意外的标识符”

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

那么,为什么会这样呢?

2 个答案:

答案 0 :(得分:10)

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

您可以在JSON.org

上找到标准
  

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

换句话说,单引号中没有字符串。

答案 1 :(得分:1)

第一个没有用,因为您尝试定义字符串文字时出现语法错误 你可能想要

pets = '{\'pet_names\':[{"name":"jack"},{"name":"john"},{"name":"joe"}]}';

注意引号已转义。

现在,如果你在json解析器中使用了该字符串,你仍然会收到错误(SyntaxError:Unexpected token'),因为JSON中的键必须用双引号定义,使用单引号有效定义JavaScript对象文字与JSON分开。