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

Python3调用API访问JSON数组遇IndexError:列表索引越界求助

解决Python调用API时访问空数组的IndexError问题

嘿,我来帮你捋清楚这个问题的来龙去脉哈!

错误原因拆解

你碰到的IndexError: list index out of range,核心原因其实很简单:某个API请求返回了空数组[],这时候你硬要去取jdata[0],自然会报错——空数组里根本没有第0个元素嘛。

看你的代码逻辑,是循环用LIST里的参数调用接口,大概率是其中某一个参数对应的接口返回了空值,而不是所有请求都有问题。你后来发现API恢复正常后代码就能跑,也正好验证了这一点。

代码优化建议

虽然API恢复后能正常运行,但为了以后不再踩这个坑(比如API临时抽风、参数对应的数据本身就不存在),建议给代码加个判断逻辑,先确认数组非空再去访问元素:

import requests
import json
LIST = ['1','2']
data = {}
for i in LIST:
    api = 'http://foo.bar.com/values/%s/nodes' % (i)
    r = requests.get(api)
    r.raise_for_status()
    jdata = r.json()
    # 先判断数组是否有内容,再取值
    if jdata:
        node = jdata[0]['name']
        # 这里可以根据需求把node存入data或者做其他处理
        data[i] = node
        print(f"参数{i}对应的节点名称:{node}")
    else:
        print(f"警告:参数{i}的API返回空数组,无法获取节点名称")

这样修改后,就算再遇到API返回空数组的情况,代码也不会直接崩溃,还能给出清晰的提示,方便你快速定位问题。

调试小技巧

平时调试这类API调用问题时,可以在jdata = r.json()之后加一行打印代码:

print(f"参数{i}的API返回结果:{jdata}")

这样能直观看到每个请求的返回内容,一下子就能找出是哪个参数对应的请求出了问题,比单纯看报错高效多啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 07:42:50