ctrl+j不能直接用于json多行转单行,因其机械删除换行符会破坏语法;安全做法是区分结构换行(用pretty json: minify json)与内容换行(查 ? 替换为\n),或用jq构建系统(ctrl+b)可靠压缩。

Ctrl+J 不能直接用于 JSON 多行转单行
它会机械删除换行符并插入空格,破坏 JSON 语法结构。常见崩坏包括:"key":和{挤到同一行、字符串值后换行被删导致"value""next_key"拼接、数组元素间多出空格或漏逗号。
真正安全的做法是:先确认你要合并的是「结构换行」(如对象/数组的缩进换行)还是「内容换行」(如字段值里的
)。前者需保留语法边界,后者需转义而非删除。
- 结构换行:用
Pretty JSON: Minify JSON(快捷键默认Ctrl+Alt+M)——它基于真实解析器压缩,不碰引号内内容 - 内容换行:查
?→ 替换为\n(注意双反斜杠),且务必先统一换行符(File → Line Endings → Unix) - 若只是临时查看,别删换行——JSON 的可读性依赖缩进,压缩仅用于传输或存储
用 Build System 调用 jq 实现可靠转换
Sublime 本身不解析 JSON,但能调用系统命令。本地装了 jq,就能做语义级操作,比正则靠谱得多。
新建 Build System:Tools → Build System → New Build System,填入:
{
"cmd": ["jq", "-c", "."],
"selector": "source.json",
"working_dir": "$file_path",
"shell": true
}
保存为 minify.sublime-build。之后选中一段 JSON,Ctrl+B 即输出单行压缩结果。
-
-c表示 compact(单行),-r输出原始字符串(无引号),-s合并多行 JSON 对象为数组 - 报错
jq: command not found?不是插件问题,是系统 PATH 没包含jq—— Windows 查jq.exe路径并加进环境变量,Mac/Linux 用which jq确认 - 处理非标准 JSON(如带注释)前,先用
Pretty JSON: Validate检查合法性
手动正则替换时必须避开的三个坑
正则能救急,但容易翻车。关键不是“怎么写”,而是“在哪写”和“写之前做什么”。
- 行尾空格必须清:用
Ctrl+Shift+P→TrailingSpaces: Remove from current view,否则"a" "b"变成"a" "b"(中间两个空格) - 空行要删:查找
^s*$(勾选正则),替换为空,避免空行变多余换行+空格 - 编码必须是 UTF-8 无 BOM:粘贴自 Excel 或网页的 JSON 常含隐藏字符,
Ctrl+Shift+P→Convert to UTF-8再操作
Pretty JSON 插件不是万能,但它是最快验证入口
它不能把普通文本变成 JSON,也不能修复语法错误,但它能立刻告诉你“这段是不是合法 JSON”。
常用组合:
-
Pretty JSON: Format JSON(Ctrl+Alt+J)→ 看结构是否对齐、括号是否匹配 -
Pretty JSON: Validate→ 直接报错位置,比如Unexpected token , in JSON at position 123 -
Pretty JSON: Minify JSON→ 压缩前先格式化,再验证,最后压缩——三步闭环
真正难的从来不是“怎么按快捷键”,而是判断哪段该压缩、哪段该转义、哪段其实根本不是 JSON。JSON 的换行不是空白,是语法的一部分。











