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

Python提取Ombi API返回JSON数据报错及遍历问题求助

解决Python遍历Ombi API(Trakt数据源)JSON响应的问题

让我们一步步拆解你遇到的问题,然后给出正确的实现方式:

初始错误的根源

你第一次遇到的TypeError: list indices must be integers or slices, not str,是因为Ombi API返回的JSON本身就是一个列表,而不是包含response键的字典。你原本写的a['response']是把列表当成字典来访问,自然会报错——列表只能用整数索引或者切片,不能用字符串键。

修改后代码的问题

你调整后的代码有两个关键错误:

  1. 重复读取响应:await response.json()只能调用一次,因为响应流在第一次读取后就会关闭,第二次调用要么返回空,要么引发错误。
  2. 错误使用循环变量:for entry in a里的entry已经是列表中的单个字典对象了,你不需要再用b[entry]去索引——entry不是整数,这么做只会再次触发类型错误。

正确的实现代码

直接遍历返回的列表,然后从每个entry字典中提取你需要的字段即可:

request_headers = {'apiKey': pmrs_api_token, 'content-type': 'application/json'}
async with aiohttp.ClientSession() as ses:
    async with ses.get(pmrs_full_endpoint, headers=request_headers) as response:
        # 只读取一次响应,得到列表格式的JSON
        entries_list = await response.json()
        # 遍历列表中的每个条目(每个条目是一个字典)
        for entry in entries_list:
            title = entry['title']
            first_aired = entry['firstAired']
            desc = entry['overview']
            # 打印或者处理提取到的数据
            print(f"标题: {title}, 首播日期: {first_aired}, 简介: {desc}")

额外调试建议

如果不确定API返回的结构,建议先打印整个响应的类型和内容,方便排查问题:

entries_list = await response.json()
print(type(entries_list))  # 确认返回的是列表类型
print(entries_list[:2])    # 打印前2个条目,查看字典的键名是否正确

这样可以避免因为键名拼写错误(比如firstAired是不是写成了first_aired)或者结构理解偏差导致的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:45:40