Toma tu JSON y .stringify()
eso. Luego use el .replace()
método y reemplace todas las apariciones de \n
con \\n
.
EDITAR:
Hasta donde yo sé, no hay bibliotecas JS conocidas para escapar de todos los caracteres especiales en una cadena. Pero, podría encadenar el .replace()
método y reemplazar todos los caracteres especiales como este:
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.
Pero eso es bastante desagradable, ¿no? Ingrese la belleza de las funciones, ya que le permiten dividir el código en pedazos y mantener el flujo principal de su script limpio y libre de 8 .replace()
llamadas encadenadas . Pongamos esa funcionalidad en una función llamada escapeSpecialChars()
,. Vamos a seguir adelante y adjuntarlo a la prototype chain
del String
objeto, por lo que podemos llamar escapeSpecialChars()
directamente sobre los objetos de cadena.
Al igual que:
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 vez que hemos definido esa función, el cuerpo principal de nuestro código es tan simple como esto:
var myJSONString = JSON.stringify(myJSON);
var myEscapedJSONString = myJSONString.escapeSpecialChars();
// myEscapedJSONString is now ready to be POST'ed to the server