Python提取JSON日志元素触发TypeError错误,求解决方法
问题排查与解决
错误原因分析
- 索引类型不匹配:报错
TypeError: list indices must be integers or slices, not str说明你加载后的data是列表(list),但你用字符串'Objects'去索引列表——列表只能用整数或切片作为索引,因此触发错误。 - 层级访问错误:从你提供的JSON片段来看,
Objects并非直接在根层级,而是嵌套在request字典内部,就算data是字典,直接写data['Objects']也找不到对应键。
解决方案
根据你的JSON文件实际结构,分两种情况修改代码:
情况1:JSON文件最外层是列表(包含多个日志对象)
如果日志文件是多个你提供的这类JSON对象组成的数组(开头为[、结尾为]),使用以下代码:
import json with open("/Users/milosz/Desktop/logi.json") as f: data_list = json.load(f) # data_list为列表类型 # 遍历列表中的每个日志对象 for data in data_list: # 正确获取嵌套的Objects列表 objects = data['request']['Objects'] print(type(objects)) # 遍历每个Object元素 for obj in objects: print(obj)
情况2:JSON文件最外层是单个对象
如果日志文件就是单个你提供的这类JSON对象(仅片段未写完),修改代码为:
import json with open("/Users/milosz/Desktop/logi.json") as f: data = json.load(f) # data为字典类型 # 按正确层级访问Objects objects = data['request']['Objects'] print(type(objects)) print(data) for obj in objects: print(obj)
验证建议
- 先打印
type(data)确认加载后的数据类型,判断是列表还是字典。 - 打印
data完整内容,确认Objects的实际嵌套路径。
内容的提问来源于stack exchange,提问作者miuo209
相关产品推荐
相关产品推荐

