我试图访问spotify API返回的播放列表对象中的每首歌曲。当我获得JSON对象时,它会在" items"中返回一堆[Object]内容,这是轨道所在的位置:
spotifyApi.getPlaylist(id, listID)
.then(function (data) {
// printing data from this line
console.log('The playlist contains these tracks', data.body);
}, function (err) {
console.log('Something went wrong!', err);
});
输出:
Playlist name : thug lif3 Playlist ID: 41moBc7H5bWrR3iiY0Zu9Q
The playlist contains these tracks {
/*~~~ lots of skipped output ~~~*/
{ href: 'https://api.spotify.com/v1/users/...',
/*~~~ why [Object]? ~~~*/
items: [ [Object], [Object], [Object] ],
limit: 100
},
}
这些[对象]事物是无效的标志,还是有某种方法可以解析它们并从中获取数据? Spotify网站上的API资源管理器会显示"项目"之后的实际跟踪对象,因此我很困惑为什么我的应用请求不会这样做。
答案 0 :(得分:2)
您可以console.log
输出正确的JSON:
console.log('The playlist contains these tracks %j', data.body);
(%j
记录在案here)。
console.log
为对象生成的常规输出不是正确的JSON,也仅限于某个对象深度;之后,您将获得[Object]
字符串。
答案 1 :(得分:1)
这就是嵌套对象打印到节点控制台的深度。它们仍然以编程方式提供。在您的情况下,使用data.body.tracks.items
来访问对象。
如果你想要一台漂亮的打印机,你可以使用bunyan,这将使嵌套对象(以及其他所有东西)在控制台中显得非常好。
答案 2 :(得分:1)
这是节点的相当正常的行为。以编程方式向下钻取或使用util.inspect
link
答案 3 :(得分:1)
这应该可以解决问题:
var util = require('util');
...
spotifyApi.getPlaylist(id, listID)
.then(function (data) {
// printing data from this line
console.log('The playlist contains these tracks', util.inspect(data.body, { showHidden: true, depth: null });
}, function (err) {
console.log('Something went wrong!', err);
});