EJS中的循环错误不适用于JSON数据

时间:2018-01-03 03:29:20

标签: javascript json node.js express ejs

我正在尝试循环一个EJS文件,但一直遇到一个奇怪的错误。首先,我的数据如下:

{
    "name": "Marina Silva",
    "info": [{
            "periodBegins": "Sun Apr 14 23:48:36 +0000 2011",
            "periodFinishes": "Sun Apr 7 23:48:36 +0000 2011",
            "words": [{"text": "evangelico", "size":32}, 
                      {"text": "PT", "size": 12},
                      {"text": "Rede Solidariedade", "size": 34},
                      {"text": "catolico", "size": 23}]
            },
            {
            "periodBegins": "Sun Apr 7 23:48:36 +0000 2011",
            "periodFinishes": "Sun Apr 1 23:48:36 +0000 2011",
            "words": [{"text": "Bolsonaro", "size":32}, 
                      {"text": "esperanças", "size": 12},
                      {"text": "deserto", "size": 34},
                      {"text": "oasis", "size": 23}]
            }
        ]
}

从控制器文件中,我按原样返回它,而不调用它上面的JSON.stringify()。 在我的视图文件中,我可以使用

将其打印到屏幕上
<%= politician %>

但是当我尝试使用

访问'name'属性时
<table>
  <% for(var i=0; i < politician.length; i++) { %>
    <tr>
        <td><%= politician.length %></td>
        <td><%= politician[i].name %></td>
    </tr>
<% } %>
</table>

我是1 - 无法获取名称和2 - 它表示我的对象的大小为563,这是包含数据的字符串的大小。但是,它对我没有意义,因为我认为它应该被视为JSON对象而不是字符串。 我尝试在数据对象中使用JSON.parse(),但我在视图中得到的只是[object Object]。如何循环访问我的JSON数据并将其显示在表格中?

非常感谢你!

1 个答案:

答案 0 :(得分:0)

你给定的json不是简单的json对象,但是json array object表示“单个数组中的多个对象”

  

这里我只是从JSON Array对象解析名称值来向您展示如何   你可以解析它以获得所需的价值

var jsondata = '{"name":"Marina Silva","info":[{"periodBegins":"Sun Apr 14 23:48:36 +0000 2011","periodFinishes":"Sun Apr 7 23:48:36 +0000 2011","words":[{"text":"evangelico","size":32},{"text":"PT","size":12},{"text":"Rede Solidariedade","size":34},{"text":"catolico","size":23}]},{"periodBegins":"Sun Apr 7 23:48:36 +0000 2011","periodFinishes":"Sun Apr 1 23:48:36 +0000 2011","words":[{"text":"Bolsonaro","size":32},{"text":"esperanças","size":12},{"text":"deserto","size":34},{"text":"oasis","size":23}]}]}';

var parseVal = JSON.parse(jsondata);
console.log(parseVal.name)