jQuery.parseJSON löst den Fehler „Ungültiges JSON“ aufgrund eines maskierten einfachen Anführungszeichens in JSON aus
Problem:
Bei Verwendung von jQuery.post() zum Abrufen von JSON-Objekten von einem Server schlägt das Parsen fehl, wenn einer der Werte ein einfaches Anführungszeichen (') mit Escapezeichen enthält. Dies geschieht, obwohl die JSON-Zeichenfolge ansonsten gültig ist.
Grund:
Gemäß der JSON-Spezifikation sind in Zeichenfolgen nur doppelte Anführungszeichen mit Escapezeichen zulässig, keine einfachen Anführungszeichen. Einfache Anführungszeichen müssen gemäß dem JSON-Standard nicht mit Escapezeichen versehen werden.
Update:
Während einer Diskussion über JSON in „JavaScript: The Good Parts“ sagte Douglas Crockford, Der Ersteller von JSON erklärte, dass die Entscheidung, nur maskierte doppelte Anführungszeichen zuzulassen, getroffen wurde, um die Interoperabilität zu vereinfachen. Dadurch, dass nur die Verwendung von doppelten Anführungszeichen erforderlich ist, wird die Möglichkeit einer Verwechslung und eines versehentlichen Abbruchs von Zeichenfolgen ausgeschlossen.
Auswirkungen:
Das bedeutet, dass ein einfaches Anführungszeichen nicht zulässig ist innerhalb einer JSON-Zeichenfolge, um die Zeichenfolge versehentlich zu beenden. Daher ist es in der formalen JSON-Spezifikation nicht erforderlich, einfache Anführungszeichen zu maskieren.
Überlegungen zur Implementierung:
Während die JSON-Spezifikation keine maskierten einfachen Anführungszeichen zulässt, sind einfache Implementierungen wie org .json für Java sind nachsichtiger und erlauben deren Verwendung. Es ist jedoch wichtig zu beachten, dass dies nicht die Norm ist und viele gängige Implementierungen, einschließlich der von jQuery verwendeten, sich strikt an die offizielle JSON-Spezifikation halten und JSON ablehnen, das Zeichenfolgen in einfache Anführungszeichen und/oder einfache Anführungszeichen mit Escapezeichen enthält.
jQuery.parseJSON-Verhalten:
jQuery.parseJSON basiert auf dem zugrunde liegenden JSON-Parser, der vom Browser bereitgestellt wird, oder einer geladenen Bibliothek wie json2.js. Da diese Implementierungen in der Regel mit der JSON-Spezifikation kompatibel sind, erlauben sie keine maskierten einfachen Anführungszeichen, und daher gilt dies auch für jQuery.
Das obige ist der detaillierte Inhalt vonWarum gibt jQuery.parseJSON den Fehler „Ungültiges JSON' aus, wenn einfache Anführungszeichen mit Escapezeichen vorhanden sind?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!