下午三点,我在改一份从技术交流群里转来的配置型 JSON,刚把网址替换成自己的订阅地址,保存后整个文件就红了。鼠标悬停在第一行红色波浪线上,提示是 Expected double-quoted property name in JSON at position 2137。我习惯性地按了 Shift+Alt+F 格式化,波浪线纹丝不动,再用 JSON Tools 里的 Fix JSON 点了一下,红色波浪线直接消失。
这不是我第一次被 JSON 折磨。写得多了你会发现,VS Code 默认能力只解决了一半问题——它能及时告诉你“哪里不对”,但不会主动帮你改。这篇就围绕 VS Code 自动修复 JSON 格式错误这件事,把工具选型、实操链路、批量场景和踩坑经验一次说清楚。无论是新手还是老手,只要经常和 JSON 打交道,这篇都值得花十分钟看完。
1. “格式化并不等于修复”——VS Code默认对JSON做了什么
1.1 格式化只动排版,不碰语义
很多人一看到 JSON 报错,第一反应就是按格式化快捷键。实际上,Format Document 做的事情非常有限:重新排列缩进、换行、空格,把文件整理成好看的结构,仅此而已。它不会去删除一个多余的逗号,也不会帮你把漏掉的右括号补上。
用一个生活化的类比来解释:格式化相当于 Word 里的“自动排版”,它可以把文章段落对齐、字体调统一,但不会改正文章里的错别字。JSON 的语法错误就是错别字,排版再整齐,错别字还是错别字。
更关键的是,格式化还有个前提——文件必须能被解析器读进去。如果 JSON 文件已经损坏到语法层面,比如缺少右括号,Prettier 这类格式化工具往往会直接拒绝工作,连排版的力气都不出。所以你会看到一种尴尬现象:文件爆红了,按格式化没反应,但 Problems 面板里的错误还挂着。
VS Code 内置的 JSON 校验是实时、底层的。它本质上调用了一个 JSON 解析器去读文件内容,一旦读到不合法语法,立刻在 Problems 面板报错。这个校验能力非常强大,但校验和修复是两码事,它只负责“发现问题”,不负责“解决问题”。
1.2 JSON解析器的报错位置为什么总在“奇怪的地方”
我见过不少新手被 JSON 解析器的报错位置搞崩溃过。明明脏乱差的地方在第 10 行,VS Code 却把红色波浪线画在了文件末尾第 500 行附近,提示 Unexpected token } in JSON at position 12345。
这不是 VS Code 的 bug,而是 JSON 解析器的天然特性。JSON 解析是从左到右逐字符扫描的流式过程,解析器在处理一个结构时,如果内部已经收敛到一个完整状态,它会继续期待下一个 token。比如一个对象后面多了一个逗号,解析器读完最后一个键值对后,已经准备接受右边括号了,结果等来一个逗号,它并不知道这个逗号属于哪个位置,只能把“意外 token”扔在当前匹配状态附近。也就是说,报错位置是“当前解析状态”,不一定是“真实错误位置”。
最典型就是尾逗号问题:
json复制{
"a": 1,
"b": 2,
}
解析器读完 "b": 2 后,发现直接遇到了 },它认为对象结构合法结束了,然后下一个 token 才是真正的 },这时才报“多余右括号”。对于大型嵌套 JSON 文件,这个错位会让你在错误的位置翻来覆去找很久。
1.3 VS Code能实时校验,但缺一步“语义修复”
总结一下 VS Code 自带能力的天花板:
- 能做:JSON 语法实时校验、Problems 面板展示错误、缩放、括号跳转、HTML/JSON/JSONC 语言模式切换、基础格式化。
- 不能做:自动删除尾逗号、自动补全缺失引号、自动把中文引号转成英文引号、自动移除 JSON5 风格的单引号和注释。
这些“不能做”的恰恰是日常最痛的场景。社区分享的配置型 JSON 文件,经常带着尾逗号、注释、单引号、裸键名,甚至混入中文符号。VS Code 只会报一堆红色错误,但修复要你手动来。
于是问题就变成了:怎么让 VS Code 自动完成这些修复动作?答案是装插件。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 让VS Code真正具备“自动修复”能力的工具组合
2.1 JSON Tools:一键修复JSON的实用插件
先说我最推荐的工具:JSON Tools 扩展。在扩展商店搜索 JSON Tools(作者是 terrythen)安装即可。它的核心能力是多种 JSON 操作,其中对格式错误处理最直接的是 Fix JSON 功能。
Fix JSON 的适用场景非常暴力:
- 移除尾逗号
- 把单引号属性名和单引号字符串转成双引号
- 自动给裸属性名加双引号
- 去掉 JSON5 风格的注释
- 修复中英文引号混用问题
使用方法有两种:
- 右键点击 JSON 文档,在菜单中选择 “JSON Tools -> Fix JSON”。
- 打开 Command Palette(
Ctrl+Shift+P),输入Fix JSON回车。
修复完成
