jQuery.parseJSON 单引号与双引号

Posted

技术标签:

【中文标题】jQuery.parseJSON 单引号与双引号【英文标题】:jQuery.parseJSON single quote vs double quote 【发布时间】:2012-12-30 14:37:28 【问题描述】:

这到底有什么区别?

这很好用:

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

但以下不起作用:

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

这是为什么呢?

【问题讨论】:

很少有相关帖子here和here。 【参考方案1】:

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

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

更新

或者它可能是jQuery single quote in JSON response的副本

【讨论】:

【参考方案2】:

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

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

【讨论】:

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

去www.Jsonlint.com网站检查你的单引号json字符串你会发现它不是一个有效的json字符串。因为双引号json是标准的json格式。

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

【讨论】:

【参考方案4】:

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

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

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

JSON.parse(str);

【讨论】:

以上是关于jQuery.parseJSON 单引号与双引号的主要内容,如果未能解决你的问题,请参考以下文章

PHP教程:PHP中单引号与双引号的区别分析

(实用篇)PHP中单引号与双引号的区别分析

SQL语言中的单引号与双引号区别

PHP中单引号与双引号的区别分析

js中的单引号与双引号[重复]

PHP 如何将单引号字符串与双引号字符串连接起来。