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

Python3解析JSON文件报错:'dict'对象无'loads'属性

Python解析JSON文件报错AttributeError的排查与解决

问题核心

你运行代码时遇到AttributeError: 'dict' object has no attribute 'loads',本质原因是代码里的json变量被覆盖了——你在上下文某处定义了一个名为json的字典,导致原本调用标准库json模块的操作,变成了对字典对象的调用,而字典自然没有loads/load方法。

排查步骤

  1. 全局搜索代码中所有json = ...的定义,找到那个覆盖了标准库模块的字典变量。
  2. 确认代码顶部是否有import json语句——如果没有,原本会报NameError,但你现在是AttributeError,说明一定有变量覆盖了json。

解决方法

1. 重命名冲突变量

把所有命名为json的自定义变量改成其他名称(比如json_data、local_json),避免和标准库模块名冲突。

2. 修复后的代码示例

推荐使用json.load直接读取文件对象(更高效,无需手动读取字符串):

import json  # 必须确保顶部导入标准库json模块

for crf in crf_ranges:
    vmaf_output_crf_list_log = job['config']['output_dir'] + '/' + build_name(stream) + f'/vmaf_{crf}.json'
    with open(vmaf_output_crf_list_log, 'r') as json_vmaf_file:
        vm = json.load(json_vmaf_file)
        vmaf_values.append((crf, vm["pooled_metrics"]["vmaf"]["harmonic_mean"]))

如果坚持使用json.loads,需要先读取文件内容为字符串:

import json

for crf in crf_ranges:
    vmaf_output_crf_list_log = job['config']['output_dir'] + '/' + build_name(stream) + f'/vmaf_{crf}.json'
    with open(vmaf_output_crf_list_log, 'r') as json_vmaf_file:
        json_content = json_vmaf_file.read()
        vm = json.loads(json_content)
        vmaf_values.append((crf, vm["pooled_metrics"]["vmaf"]["harmonic_mean"]))

额外注意事项

你提供的JSON示例存在多余尾逗号(比如"integer_vif_scale2": 0.997330,和},在frames数组末尾),虽然部分在线验证器会忽略,但Python的json模块在默认严格模式下会抛出JSONDecodeError。如果后续遇到该错误,需要删除这些多余的逗号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 07:25:38