Sublime Text 本身不支持 JSON 格式化,必须安装插件;格式化前须手动将文件语法模式设为 JSON(右下角点击切换),否则命令无效;推荐 Pretty JSON(带校验、支持中文显示、不依赖 Node.js),避免使用 JsFormat 等误当 JS 解析的插件。

Sublime Text 本身不支持 JSON 格式化,必须装插件;但不是所有标着“JSON”的插件都靠谱——装错会导致中文变 \u4f60\u597d、缩进错乱、甚至静默失败不报错。
怎么确认当前文件被识别为 JSON 语法
这是格式化失败最常被忽略的前提。Sublime 不会自动把 .json 后缀或含 {} 的文本当成 JSON,必须手动设置语法模式:
- 看右下角状态栏,如果显示
Plain Text、JavaScript或其他类型,点击它 - 选择
JSON(不是JSON with Comments,除非你真用了注释) - 若列表里没有
JSON,点Open all with current extension as…→ 选JSON - 快捷键方式:按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS),输入Set Syntax: JSON回车
JSON Reindent 和 Pretty JSON 到底用哪个
二者都可用,但行为差异极大,选错会浪费调试时间:
-
JSON Reindent:只重排缩进,不校验、不修复、不处理单引号/尾随逗号/注释。非法 JSON 直接崩溃,无提示。适合你已用python -m json.tool yourfile.json或浏览器JSON.parse()验证过合法性的场景 -
Pretty JSON:带基础校验,格式错误时弹窗指出具体行号;支持ensure_ascii: false显示中文;有右键菜单Pretty JSON → Validate;不依赖 Node.js。日常开发更稳妥 - 别用
JsFormat或JSBeautify处理纯 JSON:它们把内容当 JS 解析,可能删反斜杠、改null为字符串、吞掉注释,甚至加多余逗号
格式化后中文乱码或缩进混乱怎么办
这不是插件坏了,是 Sublime 自身设置和插件配置没对齐:
将一个或多个视频上传至YouTube。当用户想“上传到YouTube”“发YouTube”“批量上传”“upload to YouTube”“post videos to YouTube”或发布到YouTube时使用此技能。
- 中文变
\u4f60\u597d:打开Preferences → Package Settings → Pretty JSON → Settings,加入"ensure_ascii": false - 缩进混用 Tab/Space 或宽度不对:先执行
View → Indentation → Convert Indentation to Spaces,再设Indent Using Spaces,宽度为2 - 插件缩进仍不一致:检查插件设置中是否启用了
detect_indentation(应设为false),强制走你本地的空格宽度 - 文件开头有 BOM 头也会干扰:全选 →
File → Reopen with Encoding → UTF-8,再试格式化
一键压缩 JSON(去空格换行)怎么实现
Sublime 没有内置“压缩”命令,也不能靠格式化快捷键倒推。必须用 Build System 调外部工具:
- 确保系统有 Python 3.6+:
python --version可查 - 新建 Build System:
Tools → Build System → New Build System - 粘贴并保存为
JSON.sublime-build:
{
"cmd": ["python", "-c", "import json,sys; print(json.dumps(json.load(sys.stdin), separators=(',', ':')))", "<", "$file"],
"selector": "source.json",
"file_regex": "^(*?):([0-9]*):?([0-9]*)"
}
之后打开 JSON 文件,按 Ctrl+Shift+B → 选 JSON,即可输出压缩版到新标签页。注意:它不覆盖原文件,避免误操作。
真正麻烦的从来不是装哪个插件,而是语法模式没切对、中文编码没关、缩进设置和插件打架——这些细节一错,格式化就卡在“看起来装好了,但就是不生效”。

















