ParseJSON 单引号 vs 双引号

这两者有什么区别?

这种方法很有效:

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

但以下方法不起作用:

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

为什么?

77739 次浏览

As per the API documentation, double quotes are considered valid JSON, single quotes aren't.

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

That's because double quotes is considered standard while single quote is not. This is not really specific to JQuery, but its about JSON standard. So irrespective of JS toolkit, you should expect same behaviour.

A value can be a string in double quotes, or a number, or true or false or null, or an object or an array. These structures can be nested.

Update

Or perhaps its a duplicate of jQuery single quote in JSON response

Go to www.Jsonlint.com website and check your single quotes json string you will found that it is not a valid json string. Because double quotes json is standard json format.

jsonlint.com is a website to check json format right or not.

You could use replace to fix this. This worked for me.

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


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


JSON.parse(str);