我可以将JSON.parse数据渲染到EJS吗?

时间:2017-11-02 01:34:26

标签: json node.js express 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});
});

我尝试在EJS文件中通过键入<%= data %>在浏览器中获得的输出是[object Object],[object Object]来测试它。我觉得我错过了一些。有人可以帮帮我吗?

由于

编辑: 谢谢Booligoosh。只是想补充一点,我之后必须将其转换回EJS中的JSON才能使其正常工作。 :)

3 个答案:

答案 0 :(得分:1)

您正在尝试打印包含两个对象的数组到ejs模板。在模板中,您只能打印字符串

要将对象打印到模板,我们首先需要字符串化

<%= JSON.stringify(str) %>

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

<%= str[0].name %>

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

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

答案 1 :(得分:0)

ejs 模板中,我们可以渲染 json 对象如下:

<%- JSON.stringify(user) %>

我尝试使用 <%= JSON.stringify(user) %> (<%=) 但它会打印双引号的 asci 代码值。

答案 2 :(得分:-1)

试试这个:

JSON.stringify

在使用.toString将JSON对象传递回模板之前,您需要将其转换回字符串,否则只会使用[object Object],[object Object]呈现,返回"3\n" 。< / p>

相关问题