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

Python提取JSON日志元素触发TypeError错误,求解决方法

问题排查与解决

错误原因分析

  1. 索引类型不匹配:报错TypeError: list indices must be integers or slices, not str说明你加载后的data是列表(list),但你用字符串'Objects'去索引列表——列表只能用整数或切片作为索引,因此触发错误。
  2. 层级访问错误:从你提供的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)

验证建议

  1. 先打印type(data)确认加载后的数据类型,判断是列表还是字典。
  2. 打印data完整内容,确认Objects的实际嵌套路径。

内容的提问来源于stack exchange,提问作者miuo209

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 06:50:25