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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 01:10:27