迭代在express中的嵌套对象

时间:2016-02-18 13:38:24

标签: javascript json node.js express ejs

我如何在快递js中迭代对象。我从json文件中获取信息,但是一旦我做了一个循环,它就会说它没有定义。

我在这里缺少什么,我希望它列出来。虽然我将有一个名为前40的h2,它将列出Year.top2011.top40.id.top01中的所有对象

这里有任何帮助。

路由中的索引

lista = JSON.parse(data);
console.log(lista);

res.render('index', {
  lista: lista
});

我在索引中的索引

<% JSON.parse(lista).forEach(function(item) { %>
 <%- item.Year.top2011.top40.id.top01 %>
<% }; %>

我的json文件

{
"Year": {
"top2011": {
  "top40": {
    "id": {
      "top01": {
        "album_cover": "http://o.scdn.co/image/830a22646bc38f72df95ec98e3ab6bb19aa6074b",
        "artist_namn": "Adele",
        "song": "Rolling In The Deep",
        "spotify": "http://open.spotify.com/track/7h8Ud480Fm4ReUVxgFF9ZX",
        "youtube": "http://youtu.be/rYEDA3JcQqw"
      },
      "top02": {
        "album_cover": "http://o.scdn.co/image/215c999786e8319a09b7af87a970c2bdb6747c92",
        "artist_namn": "LMFAO",
        "song": "Party Rock Anthem",
        "spotify": "http://open.spotify.com/track/1CNJyTUh56oj3OCZOZ5way",
        "youtube": "http://youtu.be/KQ6zr6kCPj8"
      }
    }
  }
}
  }
}

2 个答案:

答案 0 :(得分:0)

lista不再是JSON字符串,而是JS对象。这一行:JSON.parse(lista).forEach(function(item)无效。您需要迭代listalista.forEach(function(item) {})

答案 1 :(得分:0)

首先,结构可以改进: ·为什么不将top40条目存储在数组中? 此结构包含top40_entries,每个条目都是top40 数组中的对象

{"Year": {
    "2011": {
        "top40": [
            {
            "pos": "top01",
            "album_cover": "http://o.scdn.co/image/830a22646bc38f72df95ec98e3ab6bb19aa6074b",
            "artist_namn": "Adele",
            "song": "Rolling In The Deep",
            "spotify": "http://open.spotify.com/track/7h8Ud480Fm4ReUVxgFF9ZX",
            "youtube": "http://youtu.be/rYEDA3JcQqw"
            },
            {
            "pos": "top02",
            "album_cover": "http://o.scdn.co/image/215c999786e8319a09b7af87a970c2bdb6747c92",
            "artist_namn": "LMFAO",
            "song": "Party Rock Anthem",
            "spotify": "http://open.spotify.com/track/1CNJyTUh56oj3OCZOZ5way",
            "youtube": "http://youtu.be/KQ6zr6kCPj8"
            }
        ]
    }
}}

我会使用for循环(需要时):

var top40_2011 = lista.Year.2011.top40; //get the array
for(var i=0; i<top40_2011.length; i++){
    /* Access the values using the keys : */
        //console.log(top40_2011[i].pos);
        //console.log(top40_2011[i].artist_namn);
        //console.log(top40_2011[i].song);
}

注意:请记住,数组从0开始,因此top40将从[0]到[39];