Sublime怎么配置JSON格式化_Sublime JSON美化教程【调试】

2次阅读

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

Sublime怎么配置JSON格式化_Sublime JSON美化教程【调试】

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 的编码和制表符配置打架。常见现象:中文字段值变成 u4f60u597d,或缩进突然从 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 格式化不是按个快捷键就完事的事,核心在「先校验、再美化、后确认」。很多人跳过校验直接格式化,结果把语法错误藏得更深,回头调试更费时间。

text=ZqhQzanResources