Saltar al contenido

¿Cómo escapar de una cadena JSON que contiene caracteres de nueva línea usando JavaScript?

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *