我在在线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);
那么,为什么会这样呢?
答案 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分开。