我不明白为什么这不起作用。有时我可以从json文件中获取第一个对象,只要我想要一个嵌套对象就无法获取它。
如何让它呈现“album_cover”文字?
我正在使用快递js。
路由文件夹中的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>
答案 0 :(得分:0)
如果要访问第一个album_cover字段,您的渲染方法必须看起来像这样:
res.render('index', { title: data.Year.2011.top40.id.01.album_cover });
答案 1 :(得分:0)
当我转换你的对象时,它会在"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