使用JavaScript从last.fm API获取专辑超大图URL遇object Object问题求助
解决last.fm API获取专辑'extralarge'图片URL的问题
嘿,我之前也踩过这个坑!出现object Object或者object%20Object的原因很明确——你直接把包含图片信息的嵌套对象/数组当成字符串输出了,没有正确访问到具体的URL属性。
先搞懂API返回的结构
last.fm的user.getRecentTracks(获取最近播放歌曲)接口返回的每个track里,专辑图片是存在album.image数组里的,每个数组项是一个包含size(尺寸)和#text(图片URL)的对象,结构大概是这样:
{ "track": { "album": { "image": [ {"#text": "https://...small.jpg", "size": "small"}, {"#text": "https://...medium.jpg", "size": "medium"}, {"#text": "https://...large.jpg", "size": "large"}, {"#text": "https://...extralarge.jpg", "size": "extralarge"} ] } } }
精准获取'extralarge'图片的方法
根据你用的语言,这里给两种常见实现:
JavaScript示例
// 假设你已经通过API拿到了最近播放的track对象 const recentTrack = await fetchYourRecentTrack(); // 替换成你的API请求逻辑 // 从image数组里筛选出extralarge尺寸的项 const extralargeImg = recentTrack.album.image.find(img => img.size === 'extralarge'); // 安全获取URL,避免无图片时报错 const albumImgUrl = extralargeImg ? extralargeImg['#text'] : 'https://你的默认图片URL';
Python示例
# 假设你已经通过API拿到了最近播放的track字典 recent_track = get_recent_track() # 替换成你的API请求逻辑 # 遍历image列表,找到extralarge尺寸的图片 extralarge_img = next((img for img in recent_track['album']['image'] if img['size'] == 'extralarge'), None) # 安全获取URL album_img_url = extralarge_img['#text'] if extralarge_img else 'https://你的默认图片URL'
关键注意点
- 一定要做空值判断:有些歌曲可能没有专辑封面,这时候
extralargeImg会是undefined(JS)或None(Python),直接取属性会报错。 - 别直接把对象转字符串:比如JS里
console.log('图片:' + recentTrack.album.image)会把数组转成[object Object],URL编码后就变成object%20Object,这就是你看到的错误结果。
内容的提问来源于stack exchange,提问作者PlGGS
相关产品推荐
相关产品推荐

