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

Sly*_*ght 7 json ejs node.js express

我是 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});
});
Run Code Online (Sandbox Code Playgroud)

我尝试在 EJS 文件中测试它,方法是输入<%= data %>我在浏览器中得到的输出:[object Object],[object Object]。我感觉自己少了几块。有人可以帮我吗?

谢谢

编辑:谢谢布利古什。只是想补充一点,之后我必须在 EJS 端将其转换回 JSON 才能使其正常工作。:)

Scr*_*omy 8

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

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

<%= JSON.stringify(str) %>
Run Code Online (Sandbox Code Playgroud)

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

<%= str[0].name %>
Run Code Online (Sandbox Code Playgroud)

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

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


Eth*_*han -2

尝试这个:

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) });
});
Run Code Online (Sandbox Code Playgroud)

在使用 将 JSON 对象传递给模板之前,您需要将其转换回字符串,否则它将仅使用返回JSON.stringify进行渲染。.toString[object Object],[object Object]