Возьми свой JSON и .stringify()
все. Затем используйте .replace()
метод и заменить все вхождения \n
с \\n
.
РЕДАКТИРОВАТЬ:
Насколько я знаю, нет известных библиотек JS для экранирования всех специальных символов в строке. Но вы можете связать .replace()
метод и заменить все специальные символы следующим образом:
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.
Но это довольно неприятно, не так ли? Введите всю прелесть функций в том, что они позволяют разбивать код на части и поддерживать чистоту основного потока вашего сценария без 8 цепочек .replace()
вызовов. Итак, давайте поместим эту функциональность в функцию с именем escapeSpecialChars()
. Давайте идти вперед и прикрепить его к prototype chain
из String
объекта, таким образом , мы можем назвать escapeSpecialChars()
непосредственно на объекты типа String.
Вот так:
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");
};
После того как мы определили эту функцию, основная часть нашего кода выглядит так просто:
var myJSONString = JSON.stringify(myJSON);
var myEscapedJSONString = myJSONString.escapeSpecialChars();
// myEscapedJSONString is now ready to be POST'ed to the server