Nehmen Sie Ihren JSON und .stringify()
es. Verwenden Sie dann die .replace()
Methode und ersetzen Sie alle Vorkommen von \n
durch \\n
.
BEARBEITEN:
Soweit mir bekannt ist, gibt es keine bekannten JS-Bibliotheken, um alle Sonderzeichen in einer Zeichenfolge zu maskieren. Sie können die .replace()
Methode jedoch verketten und alle Sonderzeichen wie folgt ersetzen:
var myJSONString = JSON.stringify(myJSON);
var myEscapedJSONString = myJSONString.replace(/\\n/g, "\\n")
.replace(/\\'/g, "\\'")
.replace(/\\"/g, '\\"')
.replace(/\\&/g, "\\&")
.replace(/\\r/g, "\\r")
.replace(/\\t/g, "\\t")
.replace(/\\b/g, "\\b")
.replace(/\\f/g, "\\f");
// myEscapedJSONString is now ready to be POST'ed to the server.
Aber das ist ziemlich böse, nicht wahr? Geben Sie die Schönheit von Funktionen ein, indem Sie damit Code in Teile zerlegen und den Hauptfluss Ihres Skripts sauber und frei von 8 verketteten .replace()
Aufrufen halten können. Lassen Sie uns diese Funktionalität in eine Funktion namens , escapeSpecialChars()
. Fahren wir fort und hängen Sie es an die prototype chain
des String
Objekts, also nennen wir können escapeSpecialChars()
direkt auf String - Objekte.
Wie so:
String.prototype.escapeSpecialChars = function() {
return this.replace(/\\n/g, "\\n")
.replace(/\\'/g, "\\'")
.replace(/\\"/g, '\\"')
.replace(/\\&/g, "\\&")
.replace(/\\r/g, "\\r")
.replace(/\\t/g, "\\t")
.replace(/\\b/g, "\\b")
.replace(/\\f/g, "\\f");
};
Sobald wir diese Funktion definiert haben, ist der Hauptteil unseres Codes so einfach:
var myJSONString = JSON.stringify(myJSON);
var myEscapedJSONString = myJSONString.escapeSpecialChars();
// myEscapedJSONString is now ready to be POST'ed to the server