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

Python如何读取本地JSON文件为字典并解决json.loads调用报错问题

问题原因

你遇到的报错是因为混淆了json.load()和json.loads()两个方法的用法:

  • json.loads() 接收JSON格式的字符串、字节或字节数组作为参数,适合处理硬编码的JSON内容
  • json.load() 接收文件对象作为参数,专门用于直接从打开的本地JSON文件加载内容
正确实现方法

方法1:推荐直接使用json.load()读取文件

这是处理本地JSON文件的标准写法,无需手动读取文件内容:

import json

def myfunction(dictionary):
    # 你的处理逻辑
    return new_dictionary

# 读取本地JSON文件,路径前加r代表原生字符串,无需写双反斜杠转义
with open(r'C:\Users\SONY\Desktop\test.json', 'r', encoding="utf-8") as f:
    info = json.load(f)

# 调用处理函数,注意替换为你实际的函数名(你原有代码存在笔误,定义的是myfunction,调用写的是key_replacer)
refined = myfunction(info)

# 处理完成后写回本地文件(可选)
with open(r'C:\Users\SONY\Desktop\processed_test.json', 'w', encoding="utf-8") as f:
    # ensure_ascii=False 避免中文乱码,indent=4 输出格式化的JSON结构方便阅读
    json.dump(refined, f, ensure_ascii=False, indent=4)

方法2:手动读取文件内容后用json.loads()处理

如果你需要先拿到JSON字符串再做其他处理,可以用这种写法:

with open(r'C:\Users\SONY\Desktop\test.json', 'r', encoding="utf-8") as f:
    # 先读取整个文件内容为字符串
    data_str = f.read()
    info = json.loads(data_str)

# 后续处理逻辑和方法1一致
refined = myfunction(info)
# 写入时也可以先转字符串再写入
new_data = json.dumps(refined, ensure_ascii=False, indent=4)
with open(r'C:\Users\SONY\Desktop\processed_test.json', 'w', encoding="utf-8") as f:
    f.write(new_data)

内容的提问来源于stack exchange,提问作者n.mathfreak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 06:45:01