必须安装Pretty JSON插件,因其先解析再格式化,可校验语法并精确定位错误,而内置Reindent仅调整缩进且不校验JSON合法性。

装 Pretty JSON 插件,用快捷键或命令面板操作,是目前最稳定、最省心的一键方案。其他方式(比如内置 Reindent 或 Python 构建系统)要么不校验语法、要么配置麻烦、要么中文乱码风险高,实际联调中容易翻车。
为什么必须装 Pretty JSON,而不是用内置 Reindent?
Reindent 只调整缩进和换行,完全不解析 JSON 结构。遇到 {"name":"张三","age":25} 这种单行内容,它可能原样不动;更危险的是,如果 JSON 本身有语法错误(比如少了个逗号、引号不闭合),Reindent 照样执行,结果还是错的——你根本不知道它“美化”了个寂寞。
Pretty JSON 则先做完整 JSON 解析:合法才格式化,非法立刻报错并定位到第几行第几列。这对后端联调特别关键——你粘过来的响应体里混了 HTML 注释、多了个 trailing comma,它一眼就揪出来。
- 必须确认插件作者是
dhg,别装成JSON Formatter或JsPrettier(后者专治 JS,对纯 JSON 支持弱) - 装完一定要重启 Sublime Text,尤其 ST3;ST4 虽然热加载强些,但重启一次能避开 80% 的“快捷键无效”问题
- 右下角状态栏必须显示
JSON,不是Plain text或JavaScript;否则插件压根不触发
Ctrl+Alt+J 没反应?检查这三个位置
快捷键失效不是插件坏了,大概率卡在这三个环节:
-
光标落在字符串值内部:比如"msg": "hello|world"(竖线是光标),插件会跳过解析,直接报Invalid JSON: Expecting property name enclosed in double quotes。解决办法:把光标移到行首、行尾,或干脆全选再按快捷键 -
文件语法没设对:右下角显示Plain text时,快捷键完全不响应。手动点一下右下角 →Set Syntax → JSON -
快捷键被其他插件劫持:Emmet 默认也用Ctrl+Alt+J。进Preferences → Key Bindings搜索ctrl+alt+j,看有没有重复定义;临时禁用 Emmet 测试一下最省事
压缩 JSON(Minify)要单行无空格,别用 Format 命令
Pretty JSON: Format JSON 是美化,Pretty JSON: Minify JSON 才是压缩。两者不能混用——误用 Format 去处理本就单行的 JSON,结果反而加了一堆换行缩进,跟需求背道而驰。
压缩命令调用方式有两种:
- 快捷键:默认没绑定,得自己加。在
Preferences → Key Bindings里添加:{ "keys": ["ctrl+alt+m"], "command": "un_pretty_json" } - 命令面板:按
Ctrl+Shift+P→ 输入Pretty JSON: Minify JSON→ 回车。压缩后是紧凑单行,适合塞进curl -d或接口测试工具的 raw body 里
注意:Minify 不校验语法,只做 json.dumps(..., separators=(',', ':'))。所以务必先用 Format 过一遍,确保 JSON 合法再压缩。
中文乱码、缩进不对?改用户配置文件
美化后中文变 \u4f60\u597d,或者缩进变成 4 个空格但你要 2 个——这些不是插件 bug,是插件读取了你的 Sublime 用户配置。
打开 Preferences → Package Settings → Pretty JSON → Settings – User,填入:
{
"ensure_ascii": false,
"indent": 2
}
其中 ensure_ascii: false 关键解决中文乱码;indent: 2 控制缩进空格数。改完保存,不用重启,下次格式化立即生效。
大文件(>1MB)格式化卡死?这不是配置问题,是插件限制。这时候得切片处理:复制前 500 行到新标签页,格式化完再拼回去;或者用命令行 python -m json.tool 更稳。











