Ich bin entsetzt über das Vorhandensein von hoch bewerteten Fehlinformationen zu einer so hoch angesehenen Frage zu einem Grundthema.
JSON-Zeichenfolgen können nicht in einfache Anführungszeichen gesetzt werden . Die verschiedenen Versionen der Spezifikation ( das Original von Douglas Crockford, die ECMA-Version und die IETF-Version ) geben alle an, dass Zeichenfolgen in doppelte Anführungszeichen gesetzt werden müssen. Dies ist weder eine theoretische Frage noch eine Ansichtssache, wie die derzeit akzeptierte Antwort nahe legt. Jeder JSON-Parser in der realen Welt wird einen Fehler verursachen, wenn Sie versuchen, eine Zeichenfolge in einfachen Anführungszeichen zu analysieren.
In der Version von Crockford und ECMA wird sogar die Definition eines Strings anhand eines hübschen Bildes angezeigt, was den Punkt eindeutig verdeutlichen sollte:
Das hübsche Bild listet auch alle legitimen Escape-Sequenzen innerhalb einer JSON-Zeichenfolge auf:
\"
\\
\/
\b
\f
\n
\r
\t
\u
gefolgt von vier hexadezimalen Ziffern
Beachten Sie, dass im Gegensatz zum Unsinn in einigen anderen Antworten hier \'
niemals eine gültige Escape-Sequenz in einer JSON-Zeichenfolge vorhanden ist. Dies muss nicht sein, da JSON-Zeichenfolgen immer in doppelte Anführungszeichen gesetzt werden.
Schließlich sollten Sie normalerweise nicht daran denken müssen, Zeichen selbst zu maskieren, wenn Sie JSON programmgesteuert generieren (obwohl Sie dies natürlich tun, wenn Sie beispielsweise eine JSON-basierte Konfigurationsdatei manuell bearbeiten). Bilden Sie stattdessen die Datenstruktur, die Sie codieren möchten, mit allen nativen Map-, Array-, String-, Zahlen-, Booleschen- und Nulltypen Ihrer Sprache und codieren Sie sie dann mit einer JSON-Codierungsfunktion in JSON. Eine solche Funktion ist wahrscheinlich in jede Sprache integriert, die Sie verwenden, z. B. JavaScript JSON.stringify
, PHP json_encode
oder Pythonjson.dumps
. Wenn Sie eine Sprache verwenden, in der solche Funktionen nicht integriert sind, finden Sie wahrscheinlich eine JSON-Analyse- und Codierungsbibliothek, die Sie verwenden können. Wenn Sie einfach Sprach- oder Bibliotheksfunktionen verwenden, um Dinge in und aus JSON zu konvertieren, müssen Sie nicht einmal die Escape-Regeln von JSON kennen. Dies hätte der fehlgeleitete Fragesteller hier tun sollen.