You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python解析Spotify API返回JSON时提取曲目ID出错如何解决?

问题根因
  • 遍历字典时的循环变量取到的是键名而非值:你的代码中for attribute in track['track']遍历的是track字典的所有键,当匹配到键为id时,你把attribute(也就是字符串"id")追加到了列表中,而非id对应的实际ID值。
  • 逻辑冗余:不需要遍历所有属性查找id键,Python字典支持直接通过键名取值,多余的循环会增加不必要的性能开销。
修复后的代码
def getLikedTrackIds(session):
    url = 'https://api.spotify.com/v1/me/tracks'
    payload = makeGetRequest(session, url)

    if payload is None:
        return None
    
    liked_tracks_ids = []
    for item in payload['items']:
        # 直接通过嵌套键获取曲目ID值
        track_id = item['track']['id']
        app.logger.info(f"\n\nTrack ID: {track_id}")
        liked_tracks_ids.append(track_id)
    
    return liked_tracks_ids
可选优化(异常兼容)

如果接口返回存在字段缺失的情况,可以增加判空逻辑避免代码抛出KeyError异常:

def getLikedTrackIds(session):
    url = 'https://api.spotify.com/v1/me/tracks'
    payload = makeGetRequest(session, url)

    if payload is None or 'items' not in payload:
        return None
    
    liked_tracks_ids = []
    for item in payload['items']:
        track = item.get('track')
        if not track:
            continue
        track_id = track.get('id')
        if track_id:
            liked_tracks_ids.append(track_id)
    
    return liked_tracks_ids

内容的提问来源于stack exchange,提问作者wisenickel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 14:45:03