推荐使用 Pretty JSON 插件,它专为 JSON 设计,支持格式化、校验、折叠和错误高亮,不依赖外部命令且全平台一致;JSFormat 因用 JS 解析器易误报严格 JSON 问题,应避免混用。

JSON格式化插件选哪个:Pretty JSON vs. JSFormat
Sublime Text 本身不带 JSON 格式化能力,必须装插件。目前最稳定的是 Pretty JSON,它专为 JSON 设计,支持格式化、校验、折叠、高亮错误行;而 JSFormat 虽然也能处理 JSON,但底层用的是 JavaScript 解析器,遇到严格 JSON(比如尾逗号、单引号、注释)会误报或崩溃。
推荐只装 Pretty JSON,避免冲突。安装后默认快捷键是 Ctrl+Alt+J(Windows/Linux)或 Cmd+Alt+J(macOS),按一下就能格式化当前文件。
- 如果已装了其他 JSON 相关插件(如
JSONLint或SublimeLinter-json),建议禁用它们,防止校验重复或快捷键打架 -
Pretty JSON的校验是实时的:保存或手动触发时,若语法错误,会在控制台输出类似Expecting property name enclosed in double quotes的提示,并把光标跳到出错位置 - 它不依赖外部命令,纯 Python 实现,所以 Windows/macOS/Linux 全平台一致,也不用配
python_path
如何让保存自动格式化 JSON 文件
默认情况下 Pretty JSON 不自动格式化,需要手动配置。打开 Sublime Text 的 Preferences → Package Settings → Pretty JSON → Settings – User,填入以下内容:
{
"auto_format_on_save": true,
"ensure_newline_at_eof_on_save": true,
"json_sort_keys": false,
"indent": 2
}
注意几个关键点:
-
"auto_format_on_save"必须设为true,否则保存没反应 -
"json_sort_keys"默认是false,设成true会按字母序重排 key,适合配置文件比对,但可能破坏语义顺序(比如 Swagger/OpenAPI 中字段顺序有含义) -
"indent"建议固定为2或4,别用"tab",因为 JSON 规范只认空格缩进,用 tab 可能导致某些解析器报错 - 如果保存后没反应,检查文件是否被识别为
JSON语法:右下角状态栏应显示JSON,不是Plain text或JavaScript;可点击切换,或用快捷键Ctrl+Shift+P输入Set Syntax: JSON
校验失败但没报错?检查 BOM 和不可见字符
常见现象:JSON 看起来完全合法,Pretty JSON 却提示 Invalid control character 或直接静默失败。大概率是文件开头带了 UTF-8 BOM,或者粘贴时混入了零宽空格(\u200b)、软连字符(\u00ad)等不可见字符。
- 用
Ctrl+Shift+P输入Convert to UTF-8清除 BOM - 开启行末空白和不可见字符显示:
View → Show White Space,然后逐行检查异常符号 - 如果从网页或微信复制 JSON,务必先粘贴到纯文本编辑器(如记事本)中再转过来,避免富文本污染
-
Pretty JSON不校验 JSON Schema,只做语法检查。想验证结构是否符合预期,得另配SublimeLinter-jsonschema并指定 schema 文件路径
多层嵌套或超大 JSON 文件卡死?调低解析深度
默认设置下,Pretty JSON 对嵌套超过 100 层或单行超长(>10000 字符)的 JSON 会变慢甚至无响应。这不是 bug,是防止栈溢出的保护机制。
- 在
Pretty JSON的Settings – User中加入:"max_recursive_depth": 50(根据实际需要调低) - 对超大文件(>5MB),不要用“全量格式化”,改用“选中区域格式化”:选中一段 JSON,再按
Ctrl+Alt+J - 如果频繁处理 GB 级日志类 JSON Lines(每行一个 JSON),建议换命令行工具,比如
jq '.' file.jsonl,Sublime 本质不适合这类场景

















