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解析器拿到的待解析内容为空,或者第一个字符就不是合法JSON结构,结合你的代码和环境,具体触发原因通常有以下几种:

  • 相对路径读取错位:你当前用相对路径'config.json'读取文件,Python读取相对路径时是以执行命令时的终端工作目录为基准,而非main.py文件所在的项目目录。如果你在非项目目录下启动脚本(比如在家目录执行python3 /home/paul/Documents/Nouvale/main.py),程序会读取工作目录下的同名config.json,如果该文件是空文件,就会触发这个报错。
  • 配置文件本身异常:项目目录下的config.json实际为空文件,或者文件开头带有UTF-8 BOM头、零宽空格等不可见非法字符,导致解析器从第一个字符位置就无法识别合法JSON结构。
  • 代码笔误风险:你贴出的代码里,open()返回的文件对象赋值给了config变量,但后续json.load()传入的是config_file,如果不是贴代码时的手误,这里会先触发NameError;如果实际代码里变量名一致可忽略这条。
修复方法

按以下顺序排查修复即可:

  • 替换文件读取逻辑,改用绝对路径定位配置文件,彻底规避工作目录导致的路径错位问题,同时用with上下文管理器自动处理文件资源释放,修正后的参考代码如下:
import json
import os

# 获取当前脚本所在目录的绝对路径,拼接配置文件路径
script_dir = os.path.dirname(os.path.abspath(__file__))
config_full_path = os.path.join(script_dir, "config.json")

with open(config_full_path, "r", encoding="utf-8") as config_file:
    # 调试阶段可以放开下两行注释,确认读到的文件内容是否正确
    # print("读取到的配置文件原始内容:", repr(config_file.read()))
    # config_file.seek(0) # 上面read后指针移到末尾,需要重置指针再执行load
    config_data = json.load(config_file)
  • 校验配置文件:打开项目目录下的config.json,确认文件内容和你贴出的结构一致,没有前置空行、乱码,保存时选择「UTF-8 无BOM」编码格式。
  • 排查冗余文件:检查你常用的终端启动目录(比如家目录/home/paul/)下是否存在空的config.json同名文件,如有可删除避免后续路径混淆。

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

相关产品推荐
方舟 Agent Plan

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

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