首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用JavaScript对包含换行符的JSON字符串进行转义?

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

Stack Overflow用户
提问于 2010-11-23 14:32:00
回答 14查看 412.8K关注 0票数 190

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

EN

回答 14

Stack Overflow用户

回答已采纳

发布于 2010-11-23 14:41:06

使用您的JSON并对其进行.stringify()。然后使用.replace()方法并将所有出现的\n替换为\\n

编辑:

据我所知,没有众所周知的JS库可以转义字符串中的所有特殊字符。但是,您可以链接.replace()方法并替换所有特殊字符,如下所示:

代码语言:javascript
复制
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()

如下所示:

代码语言:javascript
复制
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");
};

一旦我们定义了这个函数,代码的主体就像下面这样简单:

代码语言:javascript
复制
var myJSONString = JSON.stringify(myJSON);
var myEscapedJSONString = myJSONString.escapeSpecialChars();
// myEscapedJSONString is now ready to be POST'ed to the server
票数 150
EN

Stack Overflow用户

发布于 2012-02-09 09:25:59

按照user667073的建议,除了先对反斜杠替换进行重新排序,然后修复引号替换

代码语言:javascript
复制
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');
};
票数 76
EN

Stack Overflow用户

发布于 2016-02-15 23:44:57

和你一样,我也一直在研究一些评论和帖子,以替换我的JSON中包含html对象的特殊转义字符。

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

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

首先,我对json对象执行JSON.stringify操作,并对结果执行JSON.parse操作。

例如:

代码语言:javascript
复制
JSON.parse(JSON.stringify(jsonObject));

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

票数 36
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4253367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档