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

Python读取JSON文件遇JSONDecodeError报错的问题排查与解决求助

问题原因与解决方法

这问题我之前踩过坑,咱们一步步拆解来看:

问题根源

1. UTF-8 BOM 干扰

你看到的是**UTF-8字节顺序标记(BOM)**的显示结果。Windows下部分文本编辑器(比如记事本)保存UTF-8文件时,会自动在文件开头加上这个标记。Python默认的open()函数用utf-8编码读取时不会忽略BOM,导致JSON解析器在文件开头就遇到了非JSON规范的字符,直接触发报错。

2. HTML实体转义

输出里的"是HTML实体转义后的双引号。你的JSON文件内容其实是经过HTML转义的,记事本可能会自动帮你解析成正常的双引号显示,但Python读取的是原始文本内容,JSON解析器无法识别"作为合法的JSON引号,这也是解析失败的核心原因之一。

解决步骤

直接上可运行的解决代码,一步到位:

import json
import html

# 用utf-8-sig编码打开,自动去除BOM头
with open('sample.json', encoding='utf-8-sig') as file:
    raw_text = file.read()

# 解码HTML实体,把"转成真正的双引号
clean_text = html.unescape(raw_text)

# 现在可以正常解析JSON了
data = json.loads(clean_text)
print(data)

补充说明

  • 为什么记事本看不到这些字符?因为记事本会自动检测并隐藏UTF-8 BOM,同时对部分HTML实体做了自动解析,所以显示出来的内容是“美化”后的,和Python读取的原始文本不一致。
  • 如果你的文件里还有其他HTML实体(比如&这类),html.unescape()也能一并处理,非常省心。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 21:38:11