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

Python3加载JSON文件得到字符串类型无法作为字典提取值怎么办

问题原因
  • 你的JSON文件存储的是双重序列化后的JSON内容:原始字典数据先被执行了一次JSON序列化转为字符串,随后这个字符串本身又被当作值做了第二次JSON序列化后写入了文件。
  • 你给出的示例内容"{\"fakeData\": \"fakeName\"}"就是典型的双重序列化结果:外层的引号包裹的是已经序列化过的JSON字符串,第一次调用json.load只会解开最外层的序列化结构,所以得到的就是内层的字符串类型数据。
解决方法

临时适配现有文件

对第一次json.load得到的字符串,再调用一次json.loads做二次反序列化即可得到字典类型,示例代码如下:

import json

for files in listDirectoryFiles:
    with open(files) as json_file:
        # 第一次反序列化得到字符串
        str_data = json.load(json_file)
        # 第二次反序列化得到目标字典
        data = json.loads(str_data)
        # 现在可正常提取字段
        print(data["fakeData"])

从根源修复问题

排查生成这些JSON文件的上游代码,删除多余的序列化操作:写入JSON文件时直接对原始字典执行序列化即可,不要把已经转成JSON格式的字符串二次序列化后再写入文件。

正确的JSON文件写入参考:

# 正确写法:直接序列化字典写入
origin_data = {"fakeData": "fakeName"}
with open("test.json", "w") as f:
    json.dump(origin_data, f)

# 错误写法:多做了一次序列化,会导致后续读取得到字符串
wrong_data = json.dumps(origin_data)
with open("test.json", "w") as f:
    json.dump(wrong_data, f)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:24:06