我将一个带有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上工作一样?
答案 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);