Python读取JSON文件遇TypeError,如何正确获取downloadurl?
问题解决:TypeError: string indices must be integers
错误原因
你代码里的sub_dict["model"]是字符串类型,不是列表或字典。当用for entry in sub_dict['model']循环时,实际是遍历字符串的每个字符,每个entry都是单个字符(字符串),自然无法用entry['downloadSize']这种字典取值方式,所以触发报错。
解决步骤
1. 先确认JSON实际结构
先打印sub_dict的完整内容,明确各字段的类型和层级:
import json x = json.load(open('Download.json')) for sub_dict in x['result']: # 打印整个子字典,查看完整结构 print(sub_dict) # 确认model字段的具体类型 print("model字段类型:", type(sub_dict["model"]))
2. 根据实际结构调整代码
结合你提供的JSON结构,假设下载信息(downloadSize、downloadurl)在sub_dict的某个子列表/子字典中,以下是示例代码(根据实际字段名替换即可):
import json x = json.load(open('Download.json')) for sub_dict in x['result']: print('当前model:', sub_dict["model"]) # 假设下载信息存储在'files'列表中 if 'files' in sub_dict: for file_info in sub_dict['files']: print('下载大小:', file_info.get('downloadSize')) print('下载链接:', file_info.get('downloadurl')) # 如果下载信息直接在sub_dict根层级 else: print('下载大小:', sub_dict.get('downloadSize')) print('下载链接:', sub_dict.get('downloadurl'))
关键提示
- 不要循环字符串类型的字段,先通过
type()确认字段类型再操作 - 用
dict.get(key)替代直接dict[key],可以避免键不存在时的报错
内容的提问来源于stack exchange,提问作者Artem Shvalev
相关产品推荐
相关产品推荐

