我必须形成一个JSON字符串,其中的值包含换行符。这必须转义,然后使用AJAX调用发布。有没有人能建议一种用JavaScript转义字符串的方法。我没有使用jQuery。
发布于 2010-11-23 14:41:06
使用您的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()
的函数中。让我们继续将它附加到String
对象的prototype chain
,这样我们就可以直接在String对象上调用escapeSpecialChars()
。
如下所示:
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
发布于 2012-02-09 09:25:59
按照user667073的建议,除了先对反斜杠替换进行重新排序,然后修复引号替换
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');
};
发布于 2016-02-15 23:44:57
和你一样,我也一直在研究一些评论和帖子,以替换我的JSON中包含html对象的特殊转义字符。
我的目标是删除JSON对象中的特殊字符,并呈现json对象中的html。
这是我所做的,希望它使用起来非常简单。
首先,我对json对象执行JSON.stringify操作,并对结果执行JSON.parse操作。
例如:
JSON.parse(JSON.stringify(jsonObject));
它解决了我的问题,并使用纯Javascript完成。
https://stackoverflow.com/questions/4253367
复制相似问题