json viewer严格校验语法,对bom、注释、单引号等零容忍;jstool基于正则伪格式化,不报错但易排版错乱,适合已知合法json快速美化。

JSON Viewer 和 JSTool 都能格式化 JSON,但底层逻辑、容错能力和适用场景完全不同——别装完就用,先看清楚哪个更适合你手头的文件。
为什么 JSON Viewer 一点就报 “Invalid JSON”?
它调用的是系统级 JSON 解析器,对语法错误零容忍。不是插件坏了,是你的文本不满足 JSON 标准。
- 开头有 BOM 或不可见控制字符(比如从微信/钉钉复制来的):用
编码 → 转为 ANSI再转回 UTF-8 无 BOM清一遍 - 含
//或/* */注释:JSON 不支持注释,必须删掉 - 键或字符串用了单引号:
{'name': 'foo'}❌,得改成双引号{"name": "foo"}✅ - 数组或对象末尾多逗号:
[1,2,]❌,得写成[1,2]✅ - 值是
undefined、NaN、Infinity:这些不是合法 JSON 值,得换成null或字符串
JSTool 格式化 JSON 为什么有时不报错却排版错乱?
它本质是基于正则和轻量解析的“伪格式化”,不校验语法合法性,只按模式重排结构。适合快速美化已知合法、但缩进混乱的 JSON;不适合调试原始日志或不确定来源的字符串。
- 快捷键是
Ctrl+Alt+M,不是Ctrl+Alt+Shift+M(后者是JSON Viewer的) - 选中文本再触发,否则会尝试格式化整文件——如果文件开头不是 JSON,可能把前几行也“带歪”
- 不支持自定义缩进空格数(固定 2 空格),也不能排序键名
- 若 JSON 含换行符在字符串值内(如
"msg": "line1\nline2"),它可能误判换行位置,导致缩进塌陷
大文件或需要精确控制时,别依赖插件
Notepad++ 插件在处理 >5MB 的 JSON 时容易卡死或内存溢出。NppExec 调用 Python 是更稳的选择,前提是本地有 python 命令可用。
- 命令模板:
python -m json.tool "$(FULL_CURRENT_PATH)" > "$(CURRENT_DIRECTORY)\formatted_$(NAME_PART).json" - 执行后生成新文件,原文件不动——避免误覆盖或乱码风险
- 支持缩进控制:加参数
--indent 4可设为 4 空格(Python 3.9+) - 想排序 key:
python -c "import json,sys; print(json.dumps(json.load(sys.stdin), indent=4, sort_keys=True))" output.json
格式化后中文变问号或方框,怎么抢救?
根本不是插件问题,是 Notepad++ 编码识别失败。一旦保存,基本不可逆。
- 没保存前立刻
Ctrl+Z撤销,然后编码 → 转为 UTF-8 无 BOM,再重试 - 如果已保存且无备份:尝试
编码 → 从 ANSI 重新载入,仅对极小概率的 ANSI 混入 UTF-8 字节有效 - 长期建议:打开
设置 → 首选项 → 新建文档/默认目录 → 编码 → UTF-8 无 BOM,一劳永逸
真正麻烦的从来不是“怎么点”,而是点之前没确认编码是否正确、内容是否合法、插件行为是否匹配当前需求。尤其当 JSON 来自接口响应、日志 dump 或前端 console 复制时,多一个验证步骤,少半天排查时间。











