不能直接用 ctrl+h 替换 json 字段名,因为 sublime 的普通替换不理解 json 语法结构,会误改字符串内的相同文本、忽略空格/换行、破坏嵌套关系,导致 json 非法。

直接在 Sublime Text 里用普通替换改 JSON 的键或值,大概率会破坏结构——比如把 {"name": "Alice", "age": 30} 中的 name 替成 fullName,结果连字符串里的 "name"(如 "error: name not found")也一起改了。真要安全批量处理 JSON 键值,得绕开纯文本替换,走语义化路径。
为什么不能直接用 Ctrl+H 替换 JSON 字段名
JSON 是结构化数据,但 Sublime 默认的 Ctrl+H 面板只做字面匹配,不理解引号、嵌套、转义这些语法边界。常见翻车点:
- 改
"id"时,把"user_id"、"product_id"、甚至"id": "abc"后面的字符串值也一并替换了 - 没启用正则或没转义双引号,写
"id":却匹配不到,因为实际是"id"s*:(冒号前有空格/换行) - 跨行 JSON(如格式化后的)中,
.默认不匹配换行符,导致正则断在半路 - 替换后没验证 JSON 合法性,保存即报错,前端解析失败
用 Pretty JSON + 正则替换字段名(推荐轻量方案)
前提是已安装 Pretty JSON 或 HTML-CSS-JS Prettify 并确认右下角显示 JSON 语法标识。操作分三步:
DMap GL地图JSAPI(dmapgl)开发指南。用于编写、审查、调试 DMap 地图 API 代码,涵盖地图初始化、覆盖物渲染、图层管理、事件处理、控件交互等任务。当用户提及 dmap、dmapgl、jsapi‑gl 或相关地图开发需求时自动触发。
- 先按
Ctrl+Alt+J(或你自定义的 JSON 格式化快捷键)确保 JSON 已规整缩进、单行键值对、无 BOM —— 这能极大降低正则误匹配概率 - 按
Ctrl+H呼出替换面板,点击右下角.*图标启用正则,再勾选Match line breaks - 查找框填:
"(w+)":s*(?:"([^"]*)"|(d+)|true|false|null)(匹配带引号的字符串值、数字、布尔、null)
替换框填:"new_$1": $2$3(例如把所有字段加new_前缀) - 务必先点
Find All,看右侧列表是否只命中真正的键值对,而非注释或字符串内容
用 jq Build System 批量重写 JSON 字段(适合复杂逻辑)
当你要重命名嵌套字段、条件过滤、类型转换(如把字符串 "123" 转成数字 123),正则就力不从心了。这时该让 jq 上场:
- 新建 Build System:
Tools → Build System → New Build System,填入:
{
"cmd": ["jq", "-S", ".users[].fullName = .users[].name | del(.users[].name)"],
"selector": "source.json",
"working_dir": "$file_path",
"shell": true
}
保存为 rename-json-fields.sublime-build。之后打开 JSON 文件,Ctrl+B 即执行——这条命令会把 users 数组里每个对象的 name 搬到 fullName,再删掉原 name 字段。
-
jq命令必须写在"cmd"数组里,每个参数单独一项;-S表示排序键名,避免 diff 冗余 - 路径中的
.是 jq 的根对象,.users[].name是标准导航语法,比正则可靠得多 - Windows 用户若提示
jq找不到,请装 Git Bash 并在 Build System 中指定完整路径,如"C:\Program Files\Git\usr\bin\jq.exe"
最容易被忽略的致命细节
无论用哪种方式,以下三点不检查,90% 的批量替换会引发线上问题:
- 没确认文件编码是
UTF-8(不是UTF-8 with BOM),会导致jq解析失败或正则跳过首字符 - 没在 Git 中提交当前状态就开 Replace All,出错无法一键回退——建议先
git add -N把新文件纳入索引,再操作 - 替换后没用
Ctrl+Alt+J重新格式化并人工扫一眼缩进是否错乱,因为某些正则替换会吃掉空格,导致 JSON 无效










