我可以呈现JSON.parse数据到EJS吗?

我是NodeJS和Express的新手(一般编码)。 我正在尝试将数据呈现到EJS视图页面,以便在前端处理它。 它看起来像这样:

app.set('view engine','ejs'); var str = JSON.parse('[{"name":"bill", "age":"26"}, {"name":"jeff", "age":"32"}]'); str.forEach(function(data){ console.log(data.name); }); app.get('/data', function(req, res){ res.render('data', {str:str}); }); 

我尝试通过input<%= data %>在EJS文件中testing它,我在浏览器中得到的输出是[object Object],[object Object]。 我觉得我缺less了一些东西。 有人可以帮我吗?

谢谢

编辑:谢谢Booligoosh。 只是想补充说,我不得不在EJS方面将其转换回JSON,以使其工作。 🙂

您正试图将包含两个对象的数组打印到ejs模板。 在模板中,您只能打印string

要打印一个对象到模板,我们首先需要将它对象

 <%= JSON.stringify(str) %> 

要访问数组中的对象的属性,我们引用数组索引和属性

 <%= str[0].name %> 

迭代数组并打印出我们使用forEach的所有值:

 <ul> <% str.forEach(function(o) { %> <li><%= o.name %> - <%= o.age %></li> <% }); %> </ul> 

尝试这个:

 app.set('view engine','ejs'); var str = JSON.parse('[{"name":"bill", "age":"26"}, {"name":"jeff", "age":"32"}]'); str.forEach(function(data){ console.log(data.name); }); app.get('/data', function(req, res){ res.render('data', {str: JSON.stringify(str) }); }); 

在使用JSON.stringify将模板传递给模板之前,您需要将JSON对象转换回string,否则只会使用返回[object Object],[object Object] .toString呈现。