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

Python读取JSON文件报JSONDecodeError解码异常问题求助

问题根因

这个报错和文件路径无关:从你打印的目录清单可以确认identities.json存在,open()已经成功拿到文件对象,触发JSONDecodeError的核心原因是**identities.json的内容不符合标准JSON语法规范**,解析器在文件第27行第3列(字符偏移量238的位置)读到了不符合规则的内容,无法继续解析。
另外注意一个潜在隐患:你的脚本文件名为import json.py,和Python标准库json模块重名,后续运行时可能出现Python优先导入你自己的脚本、而非标准库json模块的问题,建议立刻把脚本重命名为read_identities.py这类不与标准库重名的名称。

常见触发场景

第27行附近大概率存在以下格式错误之一:

  • 多余尾逗号:对象/数组最后一个键值对/元素末尾多写了逗号,JSON语法不允许尾逗号存在,例如{"id": 1, "name": "admin",}末尾的逗号就是非法格式
  • 引号使用错误:用单引号包裹键名或字符串值,JSON要求所有字符串类型的键、值必须使用双引号包裹
  • 存在非法注释:写了// 注释、/* 注释 */、# 注释类内容,标准JSON不支持任何注释语法
  • 特殊字符未转义:字符串内容里直接包含未转义的双引号、反斜杠、真实换行符,没有用\"、\\、\n做转义
  • 结构不完整:对象/数组的括号没有闭合,或者文件被截断、内容不全
  • 编码异常:文件带UTF-8 BOM头,或者保存时用了非UTF-8编码,开头存在隐藏的不可见特殊字符
排查修复步骤
  1. 先精准定位错误位置的内容,运行以下代码直接打印报错点附近的文本,不用手动逐行翻找:
import json

file_path = r'C:\Users\NEHRU\Desktop\New Project\identities.json'
# 如果确认是BOM编码问题,把encoding改成'utf-8-sig'
with open(file_path, 'r', encoding='utf-8') as f:
    file_content = f.read()

# 打印报错位置前后50个字符的原始内容
error_pos = 238
print("错误位置附近原始内容:")
print(repr(file_content[max(0, error_pos - 50) : error_pos + 50]))
  1. 根据打印出的内容对应修复格式问题:
    • 删掉多余的尾逗号
    • 把所有单引号替换为符合要求的双引号
    • 删除文件内所有注释内容
    • 给未转义的特殊字符添加转义符
    • 补全未闭合的括号、补全缺失的文件内容
    • 如果打印内容开头出现\ufeff字符,把打开文件的encoding参数改为utf-8-sig即可自动过滤BOM头
  2. 修复完成后可以用代码编辑器自带的JSON格式化/校验功能验证整个文件格式是否合法,再重新运行读取代码即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 13:42:05