notepad++格式化json需先验证合法性并清理bom:开头bom转ansi再转utf-8无bom;单引号改双引号;删注释;去末尾逗号;undefined等非法值换null;jstool仅正则猜测结构,大文件或需精确控制时用python -m json.tool更稳。

Notepad++ 本身不支持 JSON 格式化,必须靠插件或外部工具;装错插件、没清 BOM、用错快捷键,都会导致“点一下就报错”或“排完还是扁平一行”。
JSON Viewer 报 “Invalid JSON” 怎么快速修复
它不是美化器,是先解析再格式化,语法不合法就直接拒掉。常见原因和对应操作:
- 开头有 BOM 或不可见控制字符(比如从微信/钉钉复制来的):菜单 → 编码 → 转为 ANSI,再 → 转为 UTF-8 无 BOM
- 用了单引号:
{'name': 'foo'}❌ → 改成{"name": "foo"}✅ - 含
//或/* */注释:JSON 标准不支持,全删 - 数组或对象末尾多逗号:
[1,2,]❌ → 改成[1,2]✅ - 值是
undefined、NaN、Infinity:这些不是合法 JSON 值,得换成null或字符串
JSTool 的 Ctrl+Alt+M 为什么排版错乱
它不真正解析 JSON,只靠正则“猜结构”,适合已知合法但缩进混乱的文件;不适合原始日志或不确定来源的数据。
- 字符串里含换行符(如
"msg": "line1\nline2")时,可能误判换行位置,导致缩进塌陷 - 缩进固定为 2 空格,不能改;也不支持
sort_keys - 快捷键是
Ctrl+Alt+M,不是Ctrl+Alt+Shift+M(后者属于 JSON Viewer) - 务必先选中文本再触发,否则会尝试格式化整文件——如果前面几行是 HTML 或注释,可能把它们也“带歪”
大文件或需要精确控制时,用 python -m json.tool 更稳
Notepad++ 插件处理 >5MB 的 JSON 容易卡死或崩溃;json.tool 本地执行,内存压力小,还能自定义参数。
- 确认系统已安装 Python 3.6+,命令行运行
python -m json.tool不报错 - 用 NppExec 执行:
python -m json.tool "$(FULL_CURRENT_PATH)" > "$(CURRENT_DIRECTORY)\formatted_$(NAME_PART).json" - Python 3.9+ 可加
--indent 4控制缩进空格数 - 想排序 key,用:
python -c "import json,sys; print(json.dumps(json.load(sys.stdin), indent=4, sort_keys=True))" - 原文件不动,生成新文件——避免误覆盖或乱码风险
中文变问号或方框,根本不是插件问题
是 Notepad++ 编码识别失败。一旦保存,基本不可逆。
- 没保存前立刻
Ctrl+Z撤销,然后菜单 → 编码 → 转为 UTF-8 无 BOM,再重试 - 长期建议:设置 → 首选项 → 新建文档/默认目录 → 编码 → 设为 UTF-8 无 BOM
- 如果已保存且无备份,可尝试编码 → 从 ANSI 重新载入(仅对极小概率的 ANSI 混入 UTF-8 字节有效)
最常被忽略的一点:格式化前不验证合法性、不清理 BOM、不确认编码,直接点 Format JSON,等于拿锤子敲电路板——不是锤子坏了,是压根没接通电源。










