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
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');};
TA贡献1804条经验 获得超8个赞
像你一样,我一直在寻找几个评论并发布以替换我的JSON中包含html对象的特殊转义字符。
我的目标是删除JSON对象中的特殊字符,并渲染json对象内的html。
这就是我所做的,希望它的使用非常简单。
首先,我做了JSON.stringify我的json对象和JSON.parse结果。
例如:
JSON.parse(JSON.stringify(jsonObject));
它解决了我的问题,并使用纯Javascript完成。
添加回答
举报