jQuery.parseJSON单引号和双引号


75

这实际上有什么区别?

这很好用:

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

但以下操作无效:

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

这是为什么?


这里这里的相关文章很少。
RBT

Answers:


106

那是因为双引号被认为是标准的,而单引号却没有。这并不是真正针对JQuery的,而是关于JSON标准的。因此,无论使用JS工具包,您都应该期待相同的行为。

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

更新资料

也许它是JSON响应jQuery单引号的重复


25

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

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


1
我保证这个答案。但是仍然存在一个问题:为什么双引号?我只能假设他们选择了双引号,因为在编程语言中,对字符串使用双引号更为常见。在某些语言中,单引号用于单字节字符,而不用于字符串。
Tim S.

3
@Tim-请参见下面的Ck的答案...另外,请注意,在字符串中,与双引号相比,您更可能使用撇号/单引号,因此使用双引号分隔字符串很容易。
David M

2
我不知道tools.ietf.org/html/rfc4627背后的原因。但是RFC是jQuery选择双引号的原因。
user625488

4

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

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


2

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

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

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

JSON.parse(str);
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.