Python读取JSON对象值报错:TypeError: string indices must be integers
解决JSON字典中提取报告ID的TypeError问题
嘿,我一眼就看出问题出在哪了!你遍历files["reports"]的时候,默认拿到的是字典的键(也就是那些"1"、"2"、"3"这类字符串),而不是对应的报告对象,所以当你尝试reports["id"]时,自然会触发TypeError——字符串只能用整数当索引嘛。
问题根源分析
你提供的JSON结构里,reports是一个嵌套字典,而不是列表:
{ "reports": { "1": { "id": "123" }, "2": { "id": "122" }, "3": { "id": "121" } } }
这里的"1"、"2"是字典的键,对应的值才是包含id的报告对象。Python中直接遍历字典时,默认只会返回键,这就是你看到的“删除["id"]后仅显示报告名称(如1、2、3)”的原因——那些其实是字典的键,不是报告名称。
修复后的代码
你只需要修改遍历方式,直接获取字典里的值即可:
方案一:仅提取ID(最简洁)
for files in result: # 遍历reports字典的所有值(即每个报告对象) for report in files["reports"].values(): print(report["id"])
方案二:同时获取键和ID(如果需要用到键的话)
如果你还需要用到"1"、"2"这些键,可以用items()同时获取键和值:
for files in result: # 同时拿到报告的键和对应的对象 for report_key, report in files["reports"].items(): print(f"报告编号: {report_key}, 报告ID: {report['id']}")
验证效果
运行修改后的代码,就能正确输出所有报告的ID:123、122、121、120...
内容的提问来源于stack exchange,提问作者Sebastian
相关产品推荐
相关产品推荐

