在JSON对象的Javascript中用斜杠和双引号替换双引号

时间:2014-12-31 13:05:29

标签: javascript jquery json

假设我有如下的Simple JSON对象。

{"test":"test"}

现在我想将其转换为以下格式

{\"test\":\"test\"}

我找到了一些用斜杠和双引号替换双引号的解决方案,但所有这些都适用于文本格式。

我需要将这种格式作为消息参数传递给AWS SNS。

2 个答案:

答案 0 :(得分:2)

您可以先使用JSON.stringify()

将JSON对象转换为字符串格式
var temp = {"test":"test"};
var tempStr = JSON.stringify(temp);
console.log(tempStr); //> {"test":"test"}
var modifiedStr = tempStr.replace(/"/g, '\\"');
console.log(modifiedStr); //> {\"test\":\"test\"}

如果您只想编码打开和关闭双引号,可以试试这个

var temp = {"test":'te"st'};
var tempObj = JSON.parse(JSON.stringify(temp));

for(var k in tempObj){
    tempObj[k]=tempObj[k].replace(/"/g, "<DOUBLE_QUOTES_4594>");
}

var tempStr = JSON.stringify(tempObj);  
console.log(tempStr); //> {"test":"te<DOUBLE_QUOTES_4594>st"}

var modifiedStr = tempStr.replace(/"|"/g, '\\"').replace(/<DOUBLE_QUOTES_4594>/g, '"');
console.log(modifiedStr); //> {\"test\":\"te"st\"}

答案 1 :(得分:2)

正如我在评论中所建议的那样 您可以使用Javascript object两次escaped JSON转到JSON.stringify

var myObject = {"test":"test"};

var myJson = JSON.stringify(myObject); // {"test":"test"}

var myEscapedJson = JSON.stringify(myJson); // "{\"test\":\"test\"}"