如何在JSON对象中转义反斜杠?

时间:2017-11-09 13:26:51

标签: javascript json

我将一个带有JSON Objet的POST请求发送到一个期望这种价值的应用程序:

{
   "input": {
      "queryFilter": "mail eq \"john.doe@foo.de\""
   }
}

请求正常,我收到回复200。

然后我想通过UI / Form发送相同的请求,并尝试将其作为JSON对象传递如下:

input: {
    queryFilter: '"mail eq \"' + mail + '\" "'
}

结束于: {input: {queryFilter: ""mail eq "john.doe@foo.de" ""}}

这在语法上是不正确的,而不是通过Postman工作的JSON。 也尝试它:

input: {
    queryFilter: {
       mail: mail
    }
}

没有帮助。

我一直在检查一些帖子,例如:How to escape Backslash in Javascript object literal,但他们看起来处理其他类型的问题 那么,如何才能正确地在JavaScript文件中构建JSON Objet,使其最终完全像在Postman上工作一样?

2 个答案:

答案 0 :(得分:2)

这里的错误不是使用反斜杠转义的双引号,而是包装json值的实际双引号。

像以下一样删除它们,你应该好好去!

const mail = 'john@doe.com'
const obj = {
  input: {
    queryFilter: 'mail eq "' + mail + '" '
  }
}

console.log(JSON.stringify(obj))

答案 1 :(得分:1)

试试这个:



var mail = "john.doe@foo.de";
var mailValue = "mail eq " + "\\\"" + mail + "\\\"";
var result = JSON.stringify(Object.create(null, {
  input: {
    value: {
      queryFilter: mailValue
    },
    enumerable: true
  }
}));

console.log(result);