如何解决json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)报错
问题根因
你的报错核心是文件指针偏移问题:
- 执行
f.read()时会一次性读取文件全部内容,同时文件读取指针会移动到文件末尾 - 后续调用
json.load(f)时会从当前指针位置(即文件末尾)读取内容,拿到的是空值,因此触发JSON解析错误,提示第1行第1列不存在合法的JSON值,和你的JSON文件内容本身无关。
修复方案
方案1:移除调试用的打印逻辑
如果不需要打印文件内容,直接调用json.load读取即可:
import json with open("items.json", 'r', encoding='utf-8') as f: items = json.load(f)
方案2:保留打印逻辑的话重置文件指针
如果需要保留打印文件内容的逻辑,读完后调用f.seek(0)把指针移回文件起始位置再解析:
import json with open("items.json", 'r', encoding='utf-8') as f: print(f.read()) # 重置文件指针到开头 f.seek(0) items = json.load(f)
其他可选排查点
如果修改后仍报错,可检查以下情况:
- 确认你打开的文件路径正确,没有读取到其他目录下的空JSON文件
- 若你的JSON文件是UTF-8 BOM编码格式,把打开文件的编码参数改为
encoding='utf-8-sig'即可兼容
内容的提问来源于stack exchange,提问作者lyphird
相关产品推荐
相关产品推荐

