JSON从EJS到JS中的JSON对象
Posted
技术标签:
【中文标题】JSON从EJS到JS中的JSON对象【英文标题】:JSON from EJS to JSON object in JS 【发布时间】:2013-06-15 13:42:01 【问题描述】:我将 EJS 与 Node.JS 一起使用,并将 JSON 对象传递给其中,但需要将其作为页面中的可用对象进行访问。我从这里得到了意外的 token o 错误:
var initData=JSON.parse(<%-JSON.stringify(list)%>);
我不知道这里出了什么问题。
这是渲染时文件中的样子:
var initData=JSON.parse(["title":"South Hills Health System - University Health Center","adr":"200 Lothrop St,15213","coords":"40.441875,-79.960813","images":[],"tags":[],"_id":"51c0e9798384f40000000017","title":"Bombay Food Market","adr":"4605 Centre Avenue, Pittsburgh, PA 15213, USA","coords":null,"images":[],"tags":["indian","groceries","ethnic","store"],"_id":"51c0519e02b7cbec73000002"]);
【问题讨论】:
【参考方案1】:试试这个:
var initData = JSON.parse('<%-JSON.stringify(list)%>');
或者:
var initData = <%-JSON.stringify(list)%>;
【讨论】:
第一个效果很好!你能解释一下为什么单引号使它起作用吗? @GeorgeLJSON.parse
将 STRING 作为参数并查看您的输出,您在 JSON.parse
中传递数组。单引号这样做:JSON.parse('[ "title": "..." ]')
而不是这个:JSON.parse([ "title": "..." ])
为什么 initData 是一个对象而不是一个字符串?我们对其进行了字符串化
@OMGPOP 我也想知道,我猜它与<%-
运算符有关。我认为<%=
会失败。
小心,这个方法不适用于任意对象。例如,正则表达式最终成为空对象。 a: /bcd/
将输出 a:
。这是因为正则表达式存在序列化问题 - ***.com/questions/12075927/serialization-of-regexp。不知道其他类型有没有这个问题。以上是关于JSON从EJS到JS中的JSON对象的主要内容,如果未能解决你的问题,请参考以下文章