猿问

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

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

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



aluckdog
浏览 2586回答 3
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

catspeake

根据用户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');};

胡说叔叔

像你一样,我一直在寻找几个评论并发布以替换我的JSON中包含html对象的特殊转义字符。我的目标是删除JSON对象中的特殊字符,并渲染json对象内的html。这就是我所做的,希望它的使用非常简单。首先,我做了JSON.stringify我的json对象和JSON.parse结果。例如:JSON.parse(JSON.stringify(jsonObject));它解决了我的问题,并使用纯Javascript完成。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答