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

Python使用json.load加载JSON文件报JSONDecodeError错误如何解决

Python加载JSON文件触发JSONDecodeError: Expecting value: line 1 column 1 (char 0)报错的解决方案

该报错的核心原因是JSON解析器读取到的首字符不符合合法JSON格式要求,即使肉眼可见文件开头为{"version":"1.1.0","events":[{,也可按以下步骤逐一排查解决:

  • 编码不匹配问题
    默认open()方法会使用操作系统默认编码读取文件(Windows下通常为GBK),而绝大多数导出的JSON文件为UTF-8编码,部分工具导出的文件还会带UTF-8 BOM头。指定编码打开即可解决:

    # 通用UTF-8编码读取
    with open(filename, encoding='utf-8') as f:
        data = json.load(f)
    
    # 若上述代码仍报错,改用utf-8-sig处理带BOM头的文件
    with open(filename, encoding='utf-8-sig') as f:
        data = json.load(f)
    
  • 文件开头存在不可见无效字符
    部分导出工具会在文件开头插入换行、零宽空格等不可见控制字符,肉眼无法识别。可先读取全部内容,定位到JSON起始位置后再用json.loads解析:

    注意:json.loads入参要求为字符串/字节类型,直接传入文件对象会触发类型报错,也就是你之前遇到的和txt相关的报错。

    with open(filename, encoding='utf-8') as f:
        content = f.read()
        # 定位第一个JSON起始字符'{'的位置,跳过前面的无效内容
        json_start_idx = content.find('{')
        if json_start_idx == -1:
            raise ValueError("文件内不存在合法JSON结构")
        # 截取有效内容解析
        data = json.loads(content[json_start_idx:])
    
  • 文件空/路径错误校验
    若传入的文件路径错误、或者文件实际为空,也会触发该报错,可先增加前置校验:

    import os
    # 校验文件是否存在且大小不为0
    if not os.path.exists(filename) or os.path.getsize(filename) == 0:
        raise ValueError("目标文件不存在或为空,请检查路径配置")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 20:06:02