Solución:
Toma tu JSON y .stringify()
eso. Entonces usa el .replace()
método y reemplazar todas las apariciones de n
con \n
.
EDITAR:
Hasta donde yo sé, no existen bibliotecas JS conocidas para escapar de todos los caracteres especiales en una cadena. Pero, podrías encadenar el .replace()
y reemplace 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 a 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 encadenamientos. .replace()
llamadas. Pongamos esa funcionalidad en una función llamada escapeSpecialChars()
. Sigamos adelante y adjuntémoslo al prototype chain
de El String
objeto, por lo que podemos llamar escapeSpecialChars()
directamente en objetos String.
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
Según lo sugerido por el usuario 667073, excepto que primero se reordena el reemplazo de la barra invertida y se corrige el reemplazo de la cotización
escape = function (str) {
return str
.replace(/[\]/g, '\\')
.replace(/["]/g, '\"')
.replace(/[/]/g, '\/')
.replace(/[b]/g, '\b')
.replace(/[f]/g, '\f')
.replace(/[n]/g, '\n')
.replace(/[r]/g, '\r')
.replace(/[t]/g, '\t');
};
Al igual que usted, he estado buscando en varios comentarios y publicaciones para reemplazar los caracteres de escape especiales en mi JSON que contiene un objeto html dentro de eso.
Mi objetivo es eliminar los caracteres especiales en el objeto JSON y también renderizar el html que está dentro del objeto json.
Esto es lo que hice y espero que sea muy sencillo de usar.
Primero hice JSON.stringify mi objeto json y JSON.parse el resultado.
Por ejemplo:
JSON.parse(JSON.stringify(jsonObject));
Y resuelve mi problema y listo con Pure Javascript.