【问题标题】:Replace double quotes with backslash plus double quotes within JSON用反斜杠和 JSON 中的双引号替换双引号
【发布时间】:2015-02-27 13:39:34
【问题描述】:

假设我有这个简单的 JSON:

{"test":"test"}

现在我想把它转换成以下格式:

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

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

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

【问题讨论】:

  • 可以试试 JSON.stringify(JSON.stringify({"test":"test"}));
  • 1.这是一个普通的旧对象,不是 JSON; 2.'{"test":"test"}' 将是JSON; 3. 为什么你认为你必须逃避引号? 4. 只需通过 POST 发送 JSON(来自 2.)
  • 如果您找到了处理文本的方法,那么只需序列化您的 JSON 对象(使用 stringify 或类似的东西)并在 JSON 序列化字符串上执行您的解决方案。
  • @Andreas 1. 我认为 AWS SNS 使用 JSON 格式,但您不能在“消息”参数中使用对象,所以诀窍是对 json 进行编码(在 json 数据包内)和然后在客户端解码它。 2. OP 说 JSON 对象不是 JSON。
  • @Haketo:我明白了......所以实际的问题应该更像是:“如何将自定义有效负载作为消息传递给 AWS SNS” - 那么这个问题可能是 stackoverflow.com/questions/18845984/…

标签: javascript jquery string escaping


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案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\"}
    

    【讨论】:

    • 我不确定 AWS SNS 接受什么格式,如果知道请告诉我。
    猜你喜欢
    • 1970-01-01
    • 2018-02-13
    • 2022-01-27
    • 2019-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-02
    • 1970-01-01
    相关资源
    最近更新 更多