Prendi il tuo JSON e .stringify()
lo fa. Quindi utilizzare il .replace()
metodo e sostituire tutte le occorrenze di \n
con \\n
.
MODIFICARE:
Per quanto ne so, non ci sono librerie JS ben note per sfuggire a tutti i caratteri speciali in una stringa. Tuttavia, potresti concatenare il .replace()
metodo e sostituire tutti i caratteri speciali in questo modo:
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.
Ma è piuttosto brutto, vero? Inserisci la bellezza delle funzioni, in quanto ti consentono di dividere il codice in pezzi e mantenere pulito il flusso principale del tuo script e liberare 8 .replace()
chiamate concatenate . Quindi cerchiamo di mettere tale funzionalità in una funzione chiamata, escapeSpecialChars()
. Andiamo avanti e alleghiamo prototype chain
l' String
oggetto dell'oggetto, in modo da poter chiamare escapeSpecialChars()
direttamente sugli oggetti String.
Così:
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");
};
Una volta definita quella funzione, il corpo principale del nostro codice è semplice come questo:
var myJSONString = JSON.stringify(myJSON);
var myEscapedJSONString = myJSONString.escapeSpecialChars();
// myEscapedJSONString is now ready to be POST'ed to the server