Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在索引中呈现json数据_Javascript_Json_Node.js_Express - Fatal编程技术网

Javascript 在索引中呈现json数据

Javascript 在索引中呈现json数据,javascript,json,node.js,express,Javascript,Json,Node.js,Express,我不明白这为什么不起作用。有时,我可以从json文件中获取第一个对象,一旦我想要一个嵌套对象,它就无法获取它 如何使其呈现“唱片集封面”文本 我正在使用expressjs 路由文件夹中的my index.js var express = require('express'); var router = express.Router(); var fs = require('fs'); /* GET home page. */ router.get('/', function(req,

我不明白这为什么不起作用。有时,我可以从json文件中获取第一个对象,一旦我想要一个嵌套对象,它就无法获取它

如何使其呈现“唱片集封面”文本

我正在使用expressjs

路由文件夹中的my index.js

var express = require('express');

var router = express.Router();

var fs = require('fs');



/* GET home page. */

router.get('/', function(req, res, next) {

var file = __dirname + '/../public/list/list.json';


fs.readFile(file, 'utf8', function (err, data) {

if (err) {

  console.log('Error: ' + err);

  return;

}


data = JSON.parse(data);

console.log(data);

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

});

});


module.exports = router;
这是我的json文件

{
  "Year": {
    "2011": {
      "top40": {
        "id": {
          "01": {
            "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"
      },
      "02": {
        "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"
      }
    }
  }
}
  }
}
这是我的索引视图文件

<!DOCTYPE html>
<html>
  <head>
    <title><%= title %></title>
    <link rel='stylesheet' href='/stylesheets/style.css' />
  </head>
  <body>

<h1>Top Hits year : :<%= title %></h1>
<h2>Adele<%= title %></h2>
<p>Rolling In The Deep <%= title %></p>
  <a href="http://open.spotify.com/track/7h8Ud480Fm4ReUVxgFF9ZX " target="_blank"><img src="/images/spotify.jpg"></a>
<a href="http://youtu.be/rYEDA3JcQqw" target="_blank"><img src="/images/youtube.png"></a>
  </body>
    </html>

年度热门歌曲:
阿黛尔
滚滚深渊


如果要访问第一个相册封面字段,渲染方法必须如下所示:

res.render('index', { title: data.Year.2011.top40.id.01.album_cover });

当我转换您的对象时,它在
“2011”
处给我一个错误,因为它是一个数字

console.log(data.Year.2011);
我改变了你的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"
      }
     }
    }
   }
  }
 }
在这之后,我可以使用它

console.log(data.Year.top2011.top40.id.top01.album_cover);
或者在不更改json的情况下,您可以像

data.Year['2011']['top40']['id']['01']['album_cover']);

or

data.Year['2011'].top40.id['01'].album_cover

Okej,这很有效,所以在json文件中我不能使用数字作为第一个字符?最好是以字符开头,否则简单的方法就像数据['Year']['2011']['top40']['id']['01']['album_cover']);我试图用.forEach遍历对象,但它一直说它不像(data.Year['2011');