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

Python加载JSON文件报JSONDecodeError: Expecting value错误如何修复

报错核心原因

你遇到的json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0),表示JSON解析器在读取内容的第1个字符位置(也就是文件最开头)就没有找到合法的JSON值。
注意:你现在的报错不是文件不存在导致的——如果open()找不到目标文件会直接抛出FileNotFoundError,程序根本走不到json.load()这一步,说明程序已经成功打开了一个文件,只是这个文件里的内容无法被解析为合法JSON。

排查&修复步骤

按以下顺序逐一排查即可定位问题:

  • 检查文件是否为空
    找到你项目下的StudentJson.json,右键查看属性,如果文件大小为0字节,说明文件里没有任何内容,自然无法解析。你可以先写入一段合法的测试JSON验证:
    {"student_name": "张三", "student_id": 1001, "score": 95}
    
  • 确认打开的是目标文件
    代码里写的相对路径'StudentJson.json'是从运行Python命令时的工作目录查找文件,不是从students.py脚本所在的目录查找,很可能你实际打开的是其他路径下的同名空文件/非法格式文件。在代码里加一行打印即可确认实际读取的文件路径:
    import os
    print(os.path.abspath('StudentJson.json'))
    
    如果打印的路径和你存放JSON内容的文件路径不一致,直接改成目标文件的绝对路径即可。
  • 显式指定文件编码
    如果JSON文件保存时用了带BOM的UTF-8、GBK等编码,直接默认读取可能在文件开头读入非法隐藏字符,导致解析失败。打开文件时显式传入encoding参数:
    • 普通UTF-8编码文件:open(file_path, 'r', encoding='utf-8')
    • 带BOM头的UTF-8文件:open(file_path, 'r', encoding='utf-8-sig')
  • 校验JSON内容合法性
    打开JSON文件确认内容符合JSON语法规范:
    • 合法JSON只能以{(对象)、[(数组)、双引号包裹的字符串、数字、true/false/null开头
    • JSON不支持任何格式的注释(//单行注释、/* */多行注释都不行)
    • 所有字符串必须用英文双引号包裹,不能用单引号、中文全角引号
    • 键值对之间的逗号不能多写、漏写
修复后参考代码

用上下文管理器自动处理文件关闭,增加调试打印方便定位问题:

import json
import os

# 替换为你的JSON文件实际绝对路径
file_path = r'c:\Users\Chinyere\Documents\Python\Openpyxl\StudentJson.json'

with open(file_path, 'r', encoding='utf-8') as f:
    # 先读取原始内容打印,确认拿到的内容正确
    raw_content = f.read()
    print("读取到的文件原始内容:", repr(raw_content))
    data = json.loads(raw_content)

print(data.items())

如果运行后打印的raw_content是空字符串'',直接对应第一种「文件为空」的问题;如果打印的内容开头有\ufeff字样,对应编码问题,把encoding改成utf-8-sig即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 16:09:22