当我从我的快速路由向我的客户端发送一个包含对象数组的对象时,我得到一个 [Object object] 然后当我尝试将它字符串化时,我得到这个带有控制台消息的疯狂字符串
var messages = "<%=(JSON.stringify(messages))%>"
console.log(messages)
将其打印到控制台 ...
{"messages":[{"content":"cool mane","creator":"joe"},{"content":"test 4","creator":"joe"},{"content":" ewgdqf","creator":"joe"},
它应该是某种东西,这样我就可以通过做来遍历它 messages[0].content 但我得到了这个疯狂的字符串,它不允许我用它做任何事情......
如果我尝试遍历它,它只会自己打印出每个字符。
最佳答案
使用 <%= ... %>
时, EJS 将对任何输出进行编码/转义。这就是为什么 "
在 JSON 中被编码为 "
. According to this answer , 您可以使用 <%- ... %>
来防止转义相反。
也没有必要将输出放在字符串文字中。这实际上很糟糕,因为您可能会遇到嵌套引号的问题。让它直接输出到JS代码中即可:
var messages = <%-JSON.stringify(messages)%>;
关于javascript - 当我 JSON.stringify(object) 我得到一个疯狂的字符串作为值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37121005/