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

json.loads未转换为dict,读取CSV内嵌JSON列取key报错如何解决?

问题原因

你获取到的event_data是双重序列化后的JSON字符串:原始JSON对象被连续转成了两次JSON字符串。从你提供的样例可以看到,内容外层额外包裹了一对双引号,内部的反斜杠就是第一次序列化后,第二次序列化对内部引号做的转义处理。
此时你只调用一次json.loads(),只会剥离外层的转义和引号,得到的结果还是内层的JSON字符串(类型为str),自然无法通过字典的键取值,触发TypeError: string indices must be integers报错。

解决方法

有两种可行方案:

  • 方案1(兼容性最高,适配所有双重序列化场景):连续调用两次json.loads(),第一次解析得到内层JSON字符串,第二次解析得到可直接取值的字典对象。
    修改后的代码如下:
import csv
import json

with open('data.csv') as csvFile:
    csv_reader = csv.reader(csvFile, delimiter=',')
    next(csv_reader, None)  # 跳过表头行

    for row in csv_reader:
        event_data = row[4]
        # 第一次解析得到内层JSON字符串
        inner_str = json.loads(event_data)
        # 第二次解析得到字典
        data = json.loads(inner_str)
        print(data['employee_id'])
  • 方案2(仅适用于外层仅多包裹一对双引号的场景):先去除字符串首尾的双引号,再调用一次json.loads()即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 20:54:05