【问题标题】:json.stringify is adding extra backslashes in res.send()json.stringify 在 res.send() 中添加了额外的反斜杠
【发布时间】:2021-03-15 16:57:03
【问题描述】:

我的 API 需要在其响应中返回以下数据。

{ users: 'All users are as follows: [{id: 1}, {id: 2}]'}

它应该是一个json对象,其中一个键值是一个json数组。但是,json 数组变成了一个字符串,因为它需要附加到另一个字符串上。我的代码是这样的:

const array = [{id: 1}, {id:2}]
const string = 'All users are as follows: ' + JSON.stringify(array)
res.send({users: string})

我将 Express 用于我的 API。当我在邮递员中检查响应时,它会在字符串上添加许多反斜杠。但是,当我在本地执行 console.log({a: string}) 时,我看不到任何这些斜杠。 这是我看到的:

{users: "[{\"id\":1}, {\"id\":2}]"}

【问题讨论】:

  • 您确定那些额外的反斜杠实际上在字符串中,而不仅仅是在您正在查看的字符串的表示中吗?例如,console.log("\"".length) 产生 1,因为 "\"" 正是您在 JavaScript 中表示由引号组成的字符串的方式。字符串本身没有反斜杠。
  • 这实际上可能是真的。当我收到响应时,我在邮递员中看到这些 \ 但是当我使用完全相同的东西执行 console.log() 时,我看不到那些反斜杠。但是当我在 Postman 中看到响应时,有什么办法可以摆脱它们
  • 我不知道..你可能想用“邮递员”标记这个问题,看看是否有人知道
  • 好的,谢谢!我会这样做的

标签: json typescript api express postman


【解决方案1】:
   {users: "[{\"id\":1}, {\"id\":2}]"}

是 response 的 json 表示形式,在 json 中,字符串用双引号 (") 括起来表示,因此如果字符串本身包含双引号,则应将其转义。

     { "user": " "name" " } , is invalid  you should use { "user" : "\"name\""}

当您在控制台中打印它时,它只打印转义字符,这就是您看不到“但是”的原因。

了解更多关于 javascript 语法的信息:

https://www.crockford.com/mckeeman.html

当您使用 JSON.stringify() 时,它会将其转换为有效的 JSON 字符串,没有它就无法发送它,因为它将作为 javascript 对象而不是有效的 json 发送。使用

res.send ({name:"test"}} 将作为 [object][object] 发送响应

因此,获得所需内容的唯一方法是将响应作为文本而不是 JSON 发送:

const array = [{id: 1}, {id:2}]
const string = 'All users are as follows: ' + JSON.stringify(array)
res.send(`{users: "${string}" }`)

这里 res.send 不是 {users:string} ,我们使用的是 "users:string" 。

注意:它的 JSON 无效

输出:

【讨论】:

  • 啊,伙计。我想我将不得不保留反斜杠。谢谢你的回答!
【解决方案2】:

您能否在回复回复时发布您的代码。

无论如何,我都是这样做的。

let object = {name: "Juan Dela Cruz"}

res.send(object)

【讨论】:

  • 我确实发布了我的代码。我基本上做同样的事情,但键值是字符串,里面有一个 json 数组。所以,我的代码是这样的:
  • 让 object = {name: "所有名字都是" + JSON.stringify( [ {name: "name1"}, {name: "name2"} ] )" }
  • res.send(object)
  • 在我的代码中,我之前做了 JSON.stringify 部分并将其保存到变量中
  • 我认为 JSON.stringify 函数中的正常表示你在字符串中有字符串。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-10
  • 1970-01-01
  • 1970-01-01
  • 2013-01-19
  • 1970-01-01
  • 2021-07-26
相关资源
最近更新 更多