这实际上有什么区别?
这工作正常:
var obj1 = jQuery.parseJSON('{"orderedList": "true"}');
document.write("obj1 "+ obj1.orderedList );
但以下不起作用:
var obj2 = jQuery.parseJSON("{'orderedList': 'true'}");
document.write("obj2 "+ obj2.orderedList );
这是为什么?
这实际上有什么区别?
这工作正常:
var obj1 = jQuery.parseJSON('{"orderedList": "true"}');
document.write("obj1 "+ obj1.orderedList );
但以下不起作用:
var obj2 = jQuery.parseJSON("{'orderedList': 'true'}");
document.write("obj2 "+ obj2.orderedList );
这是为什么?
这是因为双引号被认为是标准的,而单引号不是。这并不是 JQuery 所特有的,而是关于JSON 标准的。因此,无论 JS 工具包如何,您都应该期待相同的行为。
值可以是双引号中的字符串、数字、true 或 false 或 null,也可以是对象或数组。这些结构可以嵌套。
更新
或者它可能是JSON 响应中 jQuery 单引号的副本
根据 API 文档,双引号被认为是有效的 JSON,单引号不是。
访问www.Jsonlint.com网站并检查您的单引号 json 字符串,您会发现它不是有效的 json 字符串。因为双引号 json 是标准的 json 格式。
jsonlint.com 是一个检查 json 格式正确与否的网站。
您可以使用替换来解决此问题。这对我有用。
var str = "{'orderedList': 'true'}";
str = str.replace(/\'/g, '\"');
JSON.parse(str);