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

Python开发Discord BOT调用Enjin API打印JSON数据报错问题

解决Enjin API返回数据索引的TypeError问题

嘿,我之前对接第三方API时也踩过类似的结构坑,给你分析下怎么解决~

你遇到的TypeError: list indices must be integers or slices, not str,说白了就是你试图用字符串键去访问一个列表类型的数据。虽然print(Data)能输出全部内容,但Enjin API返回的JSON结构里,variables_values大概率不是直接在顶层字典里,而是嵌套在某个列表元素中。

第一步:先搞清楚返回数据的真实结构

你可以用更清晰的方式打印数据,比如用pprint模块格式化输出,或者先检查数据类型:

import pprint
# 格式化打印,能看清嵌套层级
pprint.pprint(Data)
# 检查顶层数据类型
print(type(Data))  # 如果输出是<class 'list'>,说明顶层是列表

举个常见的Enjin API返回结构例子(仅作参考):

# 可能的返回结构
Data = [
    {
        "variables_values": {"key1": "value1", "key2": "value2"},
        "other_field": "xxx"
    }
]

这种情况下,你直接写Data["variables_values"]肯定报错,因为Data是列表,得先通过整数索引拿到里面的字典,再取键。

第二步:调整索引方式访问variables_values

根据结构调整代码,比如如果顶层是列表,取第一个元素再访问键:

# 先判断列表不为空,再取值(避免索引越界)
if isinstance(Data, list) and len(Data) > 0:
    # 取列表第一个元素里的variables_values
    variables_values = Data[0].get("variables_values")
    print(variables_values)
else:
    print("未找到有效的variables_values数据")

用get()方法代替直接索引["variables_values"],还能避免因为键不存在抛出KeyError,更稳健。

为什么之前的Status函数能正常工作?

因为你之前调用的其他API返回的顶层结构是字典,直接用字符串键访问没问题,但Enjin API的返回结构多了一层列表嵌套,所以索引方式得跟着变~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:28:57