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

时间:2016-05-09 16:36:59

标签: javascript json express ejs

当我从我的快速路径向我的客户端发送一个包含对象数组的对象时,我得到一个[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;},

应该是这样的东西,所以我可以通过这样做来迭代它 消息[0] .content但是我得到了这个疯狂的字符串,它不会让我对它做任何事情......

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

2 个答案:

答案 0 :(得分:11)

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

也不需要将输出放在字符串文字中。这实际上很糟糕,因为您可以通过嵌套引号获得问题。只需将其直接输出到JS代码中:

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

答案 1 :(得分:-1)

尝试改变这一点:

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

有了这个:

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