jQuery.parseJSON 单引号与双引号

IT技术 javascript jquery json
2021-01-12 00:45:42

这实际上有什么区别?

这工作正常:

var obj1 = jQuery.parseJSON('{"orderedList": "true"}');
document.write("obj1 "+ obj1.orderedList );

但以下不起作用:

var obj2 = jQuery.parseJSON("{'orderedList': 'true'}");
document.write("obj2 "+ obj2.orderedList );

这是为什么?

4个回答

那是因为双引号被认为是标准的,而单引号不是。这并不是真正特定于 JQuery,而是关于JSON 标准因此,无论 JS 工具包如何,您都应该期待相同的行为。

值可以是双引号中的字符串、数字、真假或空值、对象或数组。这些结构可以嵌套。

更新

或者它可能是JSON 响应jQuery 单引号的副本

根据 API 文档,双引号被认为是有效的 JSON,单引号不是。

http://api.jquery.com/jQuery.parseJSON/

tools.ietf.org/html/rfc4627背后的原因我不知道。但 RFC 是 jQuery 选择双引号的原因。
2021-03-15 00:45:42
我保证这个答案。但还有一个问题:为什么要双引号?我只能假设他们选择了双引号,因为在编程语言中对字符串使用双引号更为常见。在某些语言中,单引号用于单字节字符,而不是字符串。
2021-03-19 00:45:42
@Tim - 请参阅下面的 Ck 答案...另外,请注意,在字符串中,您更有可能使用撇号/单引号而不是双引号,因此用双引号分隔字符串可能更容易使用。
2021-03-29 00:45:42

转到www.Jsonlint.com网站并检查您的单引号 json 字符串,您会发现它不是有效的 json 字符串。因为双引号 json 是标准的 json 格式。

jsonlint.com 是一个检查 json 格式正确与否的网站。

您可以使用替换来解决此问题。这对我有用。

var str = "{'orderedList': 'true'}";

str = str.replace(/\'/g, '\"');

JSON.parse(str);