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?


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


25

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

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


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.


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);
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.