Sublime JSON格式化失败需分步排查:先确认版本与Package Control,安装dhg的Pretty JSON插件并重启;检查语法模式、光标位置及快捷键冲突;字段乱序属JSON标准行为,非bug;大文件需截取调试;中文乱码和缩进问题通过用户配置文件修改ensure_ascii、indent等参数解决。

JSON格式化插件装不成功?先确认Sublime版本和Package Control状态
Sublime Text 4 默认自带 JSON 语法支持,但原生不带格式化功能;Sublime Text 3 需手动安装插件。如果你按教程操作后右键没出现“Pretty JSON”或快捷键无效,大概率是插件没装对,或被其他同名插件干扰。
检查步骤:
- 按下
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS),输入Package Control: Install Package,回车后等列表加载完成 - 搜索并安装
Pretty JSON—— 注意作者是dhg,不是JSON Formatter或JsPrettier(后者主要针对 JS) - 装完重启 Sublime(尤其 ST3),再打开一个
.json文件,确认右下角状态栏显示JSON语法(不是Plain text)
快捷键没反应?检查文件类型、选区和配置冲突
Pretty JSON 默认绑定 Ctrl+Alt+J(ST3/ST4 Windows/Linux)或 Cmd+Ctrl+J(macOS),但实际是否生效,取决于三个条件是否同时满足:
- 当前文件必须是
JSON语法模式(右下角显示JSON;若显示Plain text,右键 →Set Syntax → JSON) - 光标不能在字符串值内部(比如
"name": "hello|world"中的竖线位置),否则插件会跳过解析,直接报错Invalid JSON: Expecting property name enclosed in double quotes - 没有和其他插件快捷键冲突:比如
Emmet也用Ctrl+Alt+J,可临时禁用它测试;或进Preferences → Key Bindings检查是否有重复定义
临时测试:复制一段合法 JSON(如 {"a":1,"b":[2,3]}),新建标签页 → Ctrl+Shift+P → 输入 Pretty JSON: Format → 回车,看是否成功缩进。
格式化后字段顺序乱了?这不是 bug,是 JSON 标准行为
Pretty JSON 默认使用 Python 的 json.loads() + json.dumps() 流程,而 Python 3.7+ 虽保持插入顺序,但 JSON 规范本身**不保证对象属性顺序**。如果你依赖字段顺序(例如对接某些老系统),不能靠格式化来“排序”,得用额外工具处理。
- 想按字母序排列 key:改用命令行工具
python -m json.tool --sort-keys,或在 Sublime 中安装JSON Reindent插件(它提供Sort Keys子命令) - 想保留原始顺序且美化:确保原始 JSON 是合法的(无 trailing comma、全双引号),
Pretty JSON本身不会重排,乱序往往是因为你粘贴时已含不可见控制字符(如\u200b),可用Ctrl+Shift+P → Set Syntax → Plain text查看异常符号 - 大文件(>5MB)格式化卡死:插件默认加载全文到内存,建议先用
head -n 1000 file.json > sample.json截取片段调试
中文乱码、缩进错位?改插件配置比换字体更有效
常见现象是格式化后中文变成 \u4f60\u597d,或缩进变成 2 空格但你想用 4 空格——这由插件配置控制,不是编码问题。
- 解决中文转义:打开
Preferences → Package Settings → Pretty JSON → Settings,把"ensure_ascii": true改成false - 调整缩进:在同样配置文件中添加
"indent": 4(支持整数或字符串如"\t") - 禁用自动排序(即使你没开):确认配置中没有
"sort_keys"字段,或显式设为false - 注意:修改的是
Preferences.sublime-settings(用户级),不是插件自带的Default.sublime-settings,后者会被更新覆盖
改完保存,不用重启,下次格式化立即生效。如果仍乱码,检查文件本身编码是否为 UTF-8(无 BOM):右下角点击编码名 → 选 UTF-8,再试。











