Saltar al contenido

Cómo escapar de un JSON string que contiene caracteres de nueva línea usando JavaScript?

Mantén la atención porque en esta división encontrarás el resultado que buscas.

Solución:

Tome su JSON y .stringify() eso. Luego usa el .replace() método y reemplazar todas las apariciones de n con \n.

EDITAR:

Hasta donde yo sé, no hay bibliotecas JS conocidas para escapar todos los caracteres especiales en un string. Pero, podrías encadenar el .replace() método 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 partes y mantener el flujo principal de su script limpio y libre de 8 encadenados. .replace() llamadas Así que pongamos esa funcionalidad en una función llamada, escapeSpecialChars(). Avancemos y adjúntelo a la prototype chain de El String objeto, por lo que podemos llamar escapeSpecialChars() directamente en los 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 reordenar primero el reemplazo de la barra invertida y arreglar el reemplazo de 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 investigando varios comentarios y publicaciones para reemplazar 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 representar el html que está dentro del objeto json.

Esto es lo que hice y espero que sea muy fácil de usar.

Primero hice JSON.stringificar mi objeto json y JSON.parse el resultado.

Por ejemplo:

JSON.parse(JSON.stringify(jsonObject));

Y resuelve mi problema y lo hace usando Pure Javascript.

Comentarios y puntuaciones

Si entiendes que ha resultado de utilidad nuestro artículo, sería de mucha ayuda si lo compartes con más juniors y nos ayudes a dar difusión a este contenido.

¡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 *