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
相关产品推荐
相关产品推荐

