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

Python JSON报错TypeError: string indices must be integers求解决

解决TypeError: string indices must be integers问题

嘿,一眼就找到问题啦——你多做了一步没必要的转换!

你看,requests.get(...).json()已经自动把接口返回的JSON数据解析成了Python的列表对象(里面每个元素都是带id字段的字典)。但你用json.dumps(r)把这个列表转成了JSON格式的字符串,而字符串只能用整数索引(比如取第n个字符),这时候再用ids['id']自然就会触发报错啦。

修正后的代码

直接去掉json.dumps()这一行,直接遍历解析好的列表即可:

import requests

token = 'mytoken'
headers = {
    'Authorization': token,
}
# 接口响应已被解析为Python列表(元素是频道字典)
channels = requests.get('https://canary.discordapp.com/api/v6/users/@me/channels', headers=headers).json()
# 遍历每个频道字典,提取id字段
for channel in channels:
    print(channel['id'])

额外小提示

如果之后你需要把数据转成JSON字符串保存(比如写入文件),可以用json.dumps(),但如果要再次读取里面的字段,得用json.loads()把字符串转回Python对象:

import json

# 转成JSON字符串
channels_str = json.dumps(channels)
# 转回Python对象
channels_obj = json.loads(channels_str)

不过在这个场景里完全不需要这一步,直接用.json()返回的列表就足够啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 18:47:51