推荐使用html-css-js prettify插件,它基于js-beautify,支持json校验、修复与风格保留,需启用json类型支持并配置作用域快捷键(如ctrl+alt+j),禁用自动保存格式化以防误改,并确保utf-8编码、2空格缩进及关闭detect_indentation。

JSON格式化插件装哪个才真正好用
Sublime Text 本身不带 JSON 格式化功能,得靠插件。别装 JSON Reindent,它只缩进不校验,遇到缺逗号、多逗号直接崩;也别迷信 JsFormat,它把 JSON 当 JS 解析,会偷偷改字符串里的反斜杠甚至删掉注释(虽然 JSON 标准本来就不该有注释,但开发时你真可能加)。推荐用 HTML-CSS-JS Prettify,它底层调的是 js-beautify,对 JSON 支持稳定,能报错、能修复、能保留原始换行风格。
- 确保安装时勾选了
JSON类型支持(插件设置里默认开) - 安装后右键菜单会出现
HTML/CSS/JS Prettify → Pretty JSON - 如果没出现,检查是否在
Preferences → Package Settings → HTML-CSS-JS Prettify → Settings中把"json": true设为true
JSON 文件一保存就自动格式化,怎么配
自动格式化靠 on_save 钩子,但不能全局开——否则你保存一个 .json 配置文件没问题,保存一个 package.json 却被强行塞上双引号键名(ES5 兼容模式下),或者把 null 改成 "null"(这是典型配置错误)。必须限定作用域。
- 打开
Preferences → Package Settings → HTML-CSS-JS Prettify → Key Bindings - 添加一条绑定,只对
.json后缀生效:[ { "keys": ["ctrl+alt+j"], "command": "html_css_js_prettify", "args": {"type": "json"}, "context": [ { "key": "selector", "operator": "equal", "operand": "source.json" } ] } ] - 别用
on_save自动触发:JSON 文件常含敏感字段(如密钥、路径),自动重排可能掩盖手误
格式化后中文乱码或缩进错乱
这不是插件问题,是 Sublime 的编码和制表符配置打架。常见现象:中文字段值变成 \u4f60\u597d,或缩进突然从 2 空格变 4 空格还混着 Tab。
- 检查文件编码:右下角状态栏点编码名,确保是
UTF-8,不是UTF-8 with BOM(BOM 会让js-beautify解析失败) - 统一缩进设置:打开
View → Indentation → Convert Indentation to Spaces,再设Indent Using Spaces,缩进宽度固定为2(JSON RFC 推荐值) - 关键一步:在插件设置中禁用
"detect_indentation",强制走你本地配置:{ "json": { "indent_size": 2, "preserve_newlines": true, "detect_indentation": false } }
格式化时报错 “Unexpected token” 或直接没反应
这基本等于 JSON 语法不合法,但 Sublime 不会高亮具体哪一行——HTML-CSS-JS Prettify 报错只说 Parse error on line 1,实际可能是第 87 行少了个括号。别急着重装插件。
- 先用浏览器控制台粘贴内容:打开 DevTools → Console,输入
JSON.parse(<code>你的JSON文本),浏览器会精准报错位置 - 或用命令行快速验证:
python -m json.tool your-file.json,出错时会标出行号 - 常见隐形坑:
- 字段名没加双引号(
{name: "x"}❌) - 末尾多逗号(
{"a":1,}❌,部分解析器容忍,但js-beautify严格拒绝) - 单引号当字符串边界(
'hello'❌)
- 字段名没加双引号(
JSON 格式化不是按个快捷键就完事的事,核心在「先校验、再美化、后确认」。很多人跳过校验直接格式化,结果把语法错误藏得更深,回头调试更费时间。










