为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

aluckdog 2019-07-31 18:44:26
如何使用JavaScript转义包含换行符的JSON字符串?我必须形成一个JSON字符串,其中一个值具有换行符。这必须转义然后使用AJAX调用发布。任何人都可以建议使用JavaScript来逃避字符串。我没有使用jQuery。
查看完整描述

3 回答

?
万千封印

TA贡献1891条经验 获得超3个赞

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


查看完整回答
反对 回复 2019-07-31
?
catspeake

TA贡献1111条经验 获得超0个赞

根据用户667073建议,除了首先重新排序反斜杠替换,并修复报价替换

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');};


查看完整回答
反对 回复 2019-07-31
?
胡说叔叔

TA贡献1804条经验 获得超8个赞

像你一样,我一直在寻找几个评论并发布以替换我的JSON中包含html对象的特殊转义字符。

我的目标是删除JSON对象中的特殊字符,并渲染json对象内的html。

这就是我所做的,希望它的使用非常简单。

首先,我做了JSON.stringify我的json对象和JSON.parse结果。

例如:

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

它解决了我的问题,并使用纯Javascript完成。


查看完整回答
反对 回复 2019-07-31
  • 3 回答
  • 0 关注
  • 2584 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信