Javascript 如何在JSON对象中转义反斜杠?
我向一个应用程序发送一个POST请求,请求主体中包含JSON Objet:Javascript 如何在JSON对象中转义反斜杠?,javascript,json,Javascript,Json,我向一个应用程序发送一个POST请求,请求主体中包含JSON Objet: { "input": { "queryFilter": "mail eq \"john.doe@foo.de\"" } } 请求很好,我得到了200的回复 然后我想通过UI/Form发送相同的请求,并尝试将其作为JSON对象传递,如下所示: input: { queryFilter: '"mail eq \"' + mail + '\" "' } 其结尾为: {输入:{queryFil
{
"input": {
"queryFilter": "mail eq \"john.doe@foo.de\""
}
}
请求很好,我得到了200的回复
然后我想通过UI/Form发送相同的请求,并尝试将其作为JSON对象传递,如下所示:
input: {
queryFilter: '"mail eq \"' + mail + '\" "'
}
其结尾为:
{输入:{queryFilter:“邮件eq”john。doe@foo.de“”“}}
这在语法上是不正确的,也不是通过邮递员工作的JSON。
还尝试将其作为:
input: {
queryFilter: {
mail: mail
}
}
没有帮助
我一直在查看一些帖子,比如:,但它们似乎在处理其他类型的问题
那么,如何才能在JavaScript文件中正确构建JSON对象,使其最终与处理Postman的对象完全相同呢?这里的错误不是用反斜杠转义的双引号,而是包装JSON值的实际双引号 像下面这样移除它们,你就可以开始了
const-mail=”john@doe.com'
常量对象={
输入:{
queryFilter:'mail eq'+mail+''
}
}
console.log(JSON.stringify(obj))
试试这个:
var mail=“约翰。doe@foo.de";
var mailValue=“mail eq”+“\\\”+邮件+“\\\”;
var result=JSON.stringify(Object.create(null{
输入:{
价值:{
queryFilter:mailValue
},
可枚举:true
}
}));
控制台日志(结果)
删除双引号,如:输入:{queryFilter:'mail eq\''+mail+'\'''}
它的结尾是:queryFilter:'mail eq“john。doe@foo.de“”
,这是应用程序所不期望的。它应该保留反斜杠。e、 g.“queryFilter”:“mail eq\”john。doe@foo.de\“”
。也许我的问题不是100%正确。在第一个示例中,结果字符串中没有反斜杠字符。该queryFilter
属性的值将是字符串mail eq“john”。doe@foo.de“
。JavaScript解析器本身将删除这些反斜杠。真的,没有所谓的“JSON对象”;您正在构建的是一个JavaScript对象。当您使用JSON.stringify()
序列化它时,您将得到一个有效的JSON字符串。为什么要使用字符串连接来构建JSON?有一种专门用于构建JSON的方法:JSON.stringify()
@Pointy:Yes,true。它被构建为JavaScript对象,然后被序列化为JSON。只是因为思考/打字太快而错过了它。那么,如何在JSON对象的末尾获取包含反斜杠/
和“
。后端应用程序是基于java的。您不需要逃避双重限制quotes@Andreas:正如我在之前的评论中所说。。。我的问题可能有错误的标题。我想在json中保留反斜杠。应用程序需要这种值:“queryFilter”:“mail eq\”john。doe@foo.de\“”
。Sry,我的错。JSON.stringify({queryFilter:'mail eq'john。doe@foo.de“})
->”{“queryFilter”:“mail eq\”约翰。doe@foo.de\“}”
你说得对@Andreas,我用一个snippet@3Dos当前位置看起来你的答案正确,但我面临一种奇怪的行为。log输出预期的结果,但在与网络进行检查时,然后:我看到的请求有效负载:input:{queryFilter:“mail eq”john。doe@foo.de“}
。因此,没有后端不需要的反斜杠!我可能会更新我的问题,并添加我用来澄清工作流程的功能。保持不变。我确实更新了我的问题,让它更清楚。它可能与form.builder.group()函数有关。