用脚本读取配置文件时解析失败,打印内容开头看着是空白,肉眼找不到问题。日志里能对上时间点,这种反而好排。

文件被编辑器保存成带 BOM 的 UTF-8,前三个字节不是合法 JSON 字符。这一点先确认清楚,后面就不用反复试。

raw = open('a.json', encoding='utf-8-sig').read()
data = json.loads(raw)
# 或
raw = raw.lstrip('\ufeff')

「JSON BOM 解析失败」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。

日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。权限不要一口气开到最大,先加到够用再往上试,范围小才好收。

把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。

处理上按这个顺序:读取后去除 BOM;统一保存为无 BOM 编码;解析前做一次清洗。

结果对不对很好判断,配置文件能正常解析,字段读取结果正确。

作者 9823189