Sublime不清理JSON冗余代码,仅格式化;行尾空格用原生trim_trailing_white_space_on_save解决,格式化推荐Pretty JSON插件,注释和重复键需命令行或脚本处理。

Sublime 本身不清理 JSON 冗余代码,只负责格式化;所谓“冗余”需先明确定义——是行尾空格?重复键?注释?还是无用字段?不同目标得用不同方法,不能一招通吃。
保存时自动删 JSON 行尾空格:配 trim_trailing_white_space_on_save 就够
JSON 文件里行尾空格虽不影响解析,但会干扰 Git diff、校验和比对,也容易被误认为“有内容”。原生配置即可解决,无需插件:
- 打开
Preferences → Settings – User(右侧面板),确保 JSON 合法,加入:{"trim_trailing_white_space_on_save": true} - 该设置只清理非空行末尾的
和,不动缩进、不删空行、不碰(两个空格+换行)这类 Markdown 硬换行——但在 JSON 里本就不该出现,所以安全 - 若没反应,先看右下角是否显示
JSON;若显示Plain Text或JavaScript,它可能加载了语法专属设置,把trim_trailing_white_space_on_save覆盖成false - 别同时开
TrailingSpaces插件——两者共存会导致光标跳动、重复触发,选一个就行
手动一键格式化 JSON:用 Pretty JSON 插件最稳
“清理冗余”常被误解为“压缩后变一行”,但真正需要的是可读性提升:缩进对齐、换行清晰、括号匹配。内置 Reindent 不可靠,JsFormat 会乱加逗号或吃反斜杠,Pretty JSON 是目前最贴近 JSON RFC 的选择:
- 必须满足四个前提才生效:
Package Control已装、Pretty JSON已装、右下角状态栏显示JSON、文件编码是UTF-8(不是UTF-8 with BOM) - 快捷键默认是
Ctrl+Alt+J(macOSCmd+Alt+J),但建议手动绑定并加 context 限定:[{"keys": ["ctrl+alt+j"], "command": "pretty_json", "context": [{"key": "selector", "operator": "equal", "operand": "source.json"}]}] - 它会校验语法:如果 JSON 有单引号、末尾逗号、未闭合字符串,会弹窗报错行号,不强行格式化——这是保护,不是缺陷
- 别用
HTML-CSS-JS Prettify默认 JSON 模式:它默认关"json": true,容易把{"path": "a\b"}错处理成{"path": "ab"}
想删 JSON 里的注释或重复字段?别用 Sublime 原生功能
JSON 标准不支持注释(// 或 /* */),也不定义“重复 key”的行为。如果你的文件里有这些,说明它根本不是合法 JSON,而是带注释的配置片段(如 .jsonc)或前端 mock 数据。Sublime 原生和主流插件都不处理这类语义清理:
-
Pretty JSON遇到注释直接报错退出,不会自动删;JSONLint同理 - 重复 key(如
{"a":1,"a":2})在 JS 引擎里以最后一个为准,但 Sublime 不做运行时解析,也不会帮你去重——那是后端或构建脚本的事 - 真要批量删注释,用命令行更可控:
sed -e '/^[[:space:]]*///d' -e '/^[[:space:]]*/*/,$ {/^[[:space:]]**//d; /^[[:space:]]*/*/d}' data.json(Linux/macOS) - 想筛字段?写个 Python 脚本比在编辑器里正则替换靠谱得多,尤其涉及嵌套、数组、动态 key 名时
大文件或批量 JSON 清理:绕过 GUI,直上命令行
Sublime 的 Find in Files 或全选+格式化,在 >5MB 的 JSON(比如日志 dump、导出数据)上极易卡死甚至崩溃。这不是你操作问题,是 GUI 替换引擎的设计限制:
- 验证合法性优先:
python -m json.tool data.json > /dev/null,返回 0 才继续下一步 - 压缩空格(非行尾):用
jq -c . data.json > compact.json—— 它删所有空白符,产出最小合法 JSON,适合传输 - 美化+删行尾空格一步到位:
jq '.' data.json | sed 's/[[:space:]]*$//' > pretty.json - 批量处理多个文件:
for f in *.json; do jq '.' "$f" | sed 's/[[:space:]]*$//' > "fmt_$f"; done
最容易被忽略的是:JSON 的“冗余”从来不在编辑器层面定义。空格要不要留、字段要不要删、注释算不算脏数据——这些决策点都在业务逻辑里。Sublime 只负责把已确认合法的内容,按标准方式呈现出来。配错 trim_trailing_white_space_on_save 顶多白忙活,但拿它当 JSON Schema 校验器或字段清洗工具,就真会出生产事故。


















