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)%>;

【讨论】:

第一个效果很好!你能解释一下为什么单引号使它起作用吗? @GeorgeL JSON.parse 将 STRING 作为参数并查看您的输出,您在 JSON.parse 中传递数组。单引号这样做:JSON.parse('[ "title": "..." ]') 而不是这个:JSON.parse([ "title": "..." ]) 为什么 initData 是一个对象而不是一个字符串?我们对其进行了字符串化 @OMGPOP 我也想知道,我猜它与&lt;%- 运算符有关。我认为&lt;%= 会失败。 小心,这个方法适用于任意对象。例如,正则表达式最终成为空对象。 a: /bcd/ 将输出 a: 。这是因为正则表达式存在序列化问题 - ***.com/questions/12075927/serialization-of-regexp。不知道其他类型有没有这个问题。

以上是关于JSON从EJS到JS中的JSON对象的主要内容,如果未能解决你的问题,请参考以下文章

无法从 JSON 对象中删除字段 - Node JS

Express EJS模板如何传递一个json对象来查看它是不是未定义

仅使用 EJS 迭代 json 键

显示从 Nodejs 到 EJS 的嵌套 JSON

在js中如何取出json中的对象的值

在作为 EJS 模板传递以查看的字符串化 JSON 中转义单引号