76

これの実際の違いは何ですか?

これはうまくいきます:

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

しかし、以下は機能しません:

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

何故ですか?

4

4 に答える 4

107

これは、二重引用符は標準と見なされ、一重引用符はそうではないためです。これは JQuery に固有のものではありませんが、JSON 標準に関するものです。したがって、JS ツールキットに関係なく、同じ動作を期待する必要があります。

値は、二重引用符で囲まれた文字列、数値、true、false、null、またはオブジェクトまたは配列にすることができます。これらの構造は入れ子にすることができます。

アップデート

または、JSON 応答の jQuery 単一引用符の複製かもしれません

于 2013-01-16T10:03:34.120 に答える
25

API ドキュメントによると、二重引用符は有効な JSON と見なされますが、単一引用符は有効ではありません。

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

于 2013-01-16T10:00:44.680 に答える
2

これを修正するには、replace を使用できます。これは私にとってはうまくいきました。

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

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

JSON.parse(str);
于 2016-08-11T05:06:37.873 に答える