必须安装插件才能一键格式化JSON,其中Pretty JSON可校验语法并精确定位错误,JSON Reindent仅重排缩进且不校验,易因非法JSON崩溃或静默失败;选错插件会导致乱码、数据被改或功能失效。

Sublime Text 本身不支持 JSON 格式化,所有“一键美化”功能都依赖插件,而不同插件的行为差异极大——选错不仅没效果,还会悄悄改数据、静默失败、或根本调不出来。
为什么 JSON Reindent 看似轻量却容易踩坑
它只做缩进重排,不校验语法、不修复引号、不处理尾随逗号。遇到非法 JSON(比如null写成Null、字符串漏双引号、数组末尾多逗号),它要么原样缩进,要么直接崩溃报错,不提示哪行出问题。
- 适合场景:你已用
python -m json.tool yourfile.json验证过合法性,只要快速对齐缩进 - 快捷键默认是
Ctrl+Alt+J(Win/Linux)或Cmd+Alt+J(macOS),但必须先确保右下角状态栏显示JSON,否则命令不可用 - 它不排序 key,也不标准化空白;如果两个文件字段顺序不同,Diff 会误报大量差异
- 不支持 UTF-8 with BOM —— 文件含 BOM 时会静默跳过,无任何提示
HTML-CSS-JS Prettify 是目前最稳的通用选择
它底层调用js-beautify,能识别语法错误、自动补引号、删单引号、去尾随逗号,并保留原始换行风格。但默认配置完全不可用,必须手动改三项:
- 在
Preferences → Package Settings → HTML-CSS-JS Prettify → Settings中显式启用:"json": true - 关闭自动检测缩进:
"detect_indentation": false(否则缩进忽大忽小) - 固定为 2 空格:
"indent_size": 2(RFC 推荐值,也适配多数 API 响应) - 中文显示正常需加:
"ensure_ascii": false,否则"你好"变成"\u4f60\u597d"
Pretty JSON 和 JsFormat 在 ST4 上基本不可靠
Pretty JSON在 Sublime Text 4 中常报ImportError: No module named 'sublime',因为它依赖旧版 Python 环境,且不维护;JsFormat则把 JSON 当 JS 解析,会把null转成字符串"null"、删掉字符串里的\、甚至给合法 JSON 加尾随逗号,导致解析失败。
- 两者都不校验编码:UTF-8 with BOM 文件会直接静默失败,不报错也不格式化
-
JsFormat还依赖本地node环境,路径不对或没装 node 就彻底失能 - 如果你看到格式化后中文变乱码、字段值被转义、或对象结构莫名多了一层嵌套,大概率就是这两个插件在“帮忙”
格式化前必须检查的三个硬条件
哪怕插件和快捷键全配好,只要以下任一条件不满足,Ctrl+Alt+J就会原地不动或静默失败:
- 右下角状态栏必须显示
JSON(不是Plain Text、JavaScript或JSON with Comments)——点击它手动切换,或用Ctrl+Shift+P输入Set Syntax: JSON - 文件编码必须是
UTF-8(不是UTF-8 with BOM)——用File → Reopen with Encoding → UTF-8重载 - 缩进必须统一为空格且宽度为 2 ——执行
View → Indentation → Convert Indentation to Spaces,再设Indent Using Spaces
最容易被忽略的是 BOM 和detect_indentation开关:它们不会报错,但会让格式化“看起来像没反应”,排查时得从编码和插件设置两头同时看。











