javascript - 当我 JSON.stringify(object) 我得到一个疯狂的字符串作为值

标签 javascript json express ejs

当我从我的快速路由向我的客户端发送一个包含对象数组的对象时,我得到一个 [Object object] 然后当我尝试将它字符串化时,我得到这个带有控制台消息的疯狂字符串

var messages = "<%=(JSON.stringify(messages))%>"
console.log(messages) 

将其打印到控制台 ...

{&#34;messages&#34;:[{&#34;content&#34;:&#34;cool mane&#34;,&#34;creator&#34;:&#34;joe&#34;},{&#34;content&#34;:&#34;test 4&#34;,&#34;creator&#34;:&#34;joe&#34;},{&#34;content&#34;:&#34; ewgdqf&#34;,&#34;creator&#34;:&#34;joe&#34;},

它应该是某种东西,这样我就可以通过做来遍历它 messages[0].content 但我得到了这个疯狂的字符串,它不允许我用它做任何事情......

如果我尝试遍历它,它只会自己打印出每个字符。

最佳答案

使用 <%= ... %> 时, EJS 将对任何输出进行编码/转义。这就是为什么 "在 JSON 中被编码为 &#34; . According to this answer , 您可以使用 <%- ... %> 来防止转义相反。

也没有必要将输出放在字符串文字中。这实际上很糟糕,因为您可能会遇到嵌套引号的问题。让它直接输出到JS代码中即可:

var messages = <%-JSON.stringify(messages)%>;

关于javascript - 当我 JSON.stringify(object) 我得到一个疯狂的字符串作为值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37121005/

相关文章:

javascript - 在 Highcharts 中使用带堆叠列的网格图

java - 在java中解析google geocode结果 - 找不到JSONArray [0](它在那里)

json - 当我需要将 async/await 嵌入到 javascript 中的 forEach() 中时如何使用它

java - Spring + Jackson,要求 double 序列化时尾随 0

node.js - LoopBack 存储服务,直接上传(不带请求对象)

node.js - Express JS Node 框架未响应 post() 请求

php - 在加载时为图像添加边距?

javascript - 子元素点击事件触发父点击事件

javascript - 如何通过javaScript查找html节点

node.js - 我应该将 API key 引用和环境文件放在 Node.js 应用程序中的哪里?