jQuery.parseJSON einfaches Anführungszeichen vs doppeltes Anführungszeichen

75

Was ist eigentlich der Unterschied dazu?

Das funktioniert gut:

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

aber das funktioniert nicht:

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

Warum ist das so?

sadaf2605
quelle
Einige verwandte Beiträge hier und hier .
RBT

Antworten:

106

Dies liegt daran, dass doppelte Anführungszeichen als Standard gelten, einfache Anführungszeichen jedoch nicht. Dies ist nicht wirklich spezifisch für JQuery, aber es geht um den JSON-Standard . Unabhängig vom JS-Toolkit sollten Sie also dasselbe Verhalten erwarten.

Ein Wert kann eine Zeichenfolge in doppelten Anführungszeichen oder eine Zahl oder wahr oder falsch oder null oder ein Objekt oder ein Array sein. Diese Strukturen können verschachtelt werden.

Aktualisieren

Oder es ist ein Duplikat des einfachen Anführungszeichens von jQuery in der JSON-Antwort

ch4nd4n
quelle
25

Gemäß der API-Dokumentation gelten doppelte Anführungszeichen als gültiges JSON, einfache Anführungszeichen nicht.

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

David M.
quelle
1
Ich verbürge mich für diese Antwort. Es bleibt jedoch eine Frage: Warum doppelte Anführungszeichen? Ich kann nur annehmen, dass sie doppelte Anführungszeichen gewählt haben, da es in Programmiersprachen üblicher ist, doppelte Anführungszeichen für Zeichenfolgen zu verwenden. In einigen Sprachen werden einfache Anführungszeichen für Einzelbytezeichen und nicht für Zeichenfolgen verwendet.
Tim S.
3
@Tim - siehe Cks Antwort unten ... Beachten Sie außerdem, dass Sie innerhalb einer Zeichenfolge eher ein Apostroph / einfaches Anführungszeichen als ein doppeltes verwenden, sodass es wahrscheinlich einfacher ist, mit doppelten Anführungszeichen zur Begrenzung von Zeichenfolgen zu arbeiten.
David M
2
Die Gründe für tools.ietf.org/html/rfc4627 weiß ich nicht. Aber dieser RFC ist der Grund, warum jQuery doppelte Anführungszeichen gewählt hat.
user625488
4

Gehen Sie zur Website www.Jsonlint.com und überprüfen Sie Ihre JSON- Zeichenfolge in einfachen Anführungszeichen. Sie werden feststellen, dass es sich nicht um eine gültige JSON-Zeichenfolge handelt. Weil doppelte Anführungszeichen json das Standard-json-Format ist.

jsonlint.com ist eine Website, auf der überprüft werden kann, ob das json-Format richtig ist oder nicht.

Parveen Verma
quelle
2

Sie können replace verwenden, um dies zu beheben. Das hat bei mir funktioniert.

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

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

JSON.parse(str);
Macfer Ann
quelle