当我JSON.stringfy(对象)时,我得到一个疯狂的字符串作为值

When I JSON.stringify(object) I get a crazy string as a value

本文关键字:疯狂 一个 字符串 对象 stringfy JSON 当我      更新时间:2023-09-26

当我将一个包含对象数组的对象从快速路由发送到我的客户端时,我会得到一个[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]。内容,但我得到了这个疯狂的字符串,它不会让我用它做任何事情…

如果我试着循环浏览它,它只会自己打印出每个字符。

使用<%= ... %>时,EJS将对任何输出进行编码/转义。这就是为什么JSON中的"被编码为&#34;。根据这个答案,您可以使用<%- ... %>来防止转义。

也不需要将输出放入字符串文字中。这实际上很糟糕,因为嵌套引号可能会出现问题。只需让它直接输出到JS代码中即可:

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

尝试更改此项:

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

有了这个:

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