小编典典

如何使用 JavaScript 转义包含换行符的 JSON 字符串?

all

我必须形成一个 JSON 字符串,其中一个值具有换行符。这必须转义,然后使用 AJAX 调用发布。任何人都可以建议一种使用 JavaScript
转义字符串的方法。我没有使用 jQuery。


阅读 133

收藏
2022-07-07

共1个答案

小编典典

拿你的 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
2022-07-07