ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

VS Code自动修复JSON格式错误:从报错到一键格式化

2026/9/7 20:44:44 拓冰建站 浏览量
VS Code自动修复JSON格式错误:从报错到一键格式化 作为一个几乎天天跟配置文件和接口数据打交道的开发者我太清楚JSON格式错误有多折磨人了。尤其是你满怀期待地打开一份从网上下载的“书源合集json”、同事丢过来的翻译文件、或者自己刚写好的package.json结果满屏红色波浪线控制台里一堆Unexpected token、Expected , or }之类的报错那一刻是真的想砸键盘。这也是为什么我特别想写一篇关于“vs code自动修复json格式错误”的实操文章。VS Code作为目前最主流的代码编辑器它对JSON的支持其实比很多人想象中要强得多内置能力加几个免费插件完全能做到自动修复、自动格式化、一键排查错误这篇就从我的实际使用经验出发把完整方案拆开讲清楚适合刚接触JSON的新手也适合被配置文件反复折磨的老手参考。1. 先搞明白JSON格式错误到底错在哪里1.1 最常见的几种JSON格式错误很多人一看到JSON报错就慌其实JSON是一种格式极其严格的轻量级数据交换格式规则本身并不复杂翻来覆去就是那么几个坑。我在实际工作中遇到最多的首先是尾逗号问题也就是数组或对象的最后一个元素后面多了一个逗号。比如{name: 张三, age: 30,}大多数时候我们写JavaScript习惯了允许尾逗号但JSON标准里这是明确的语法错误。其次是引号问题JSON规定键名和字符串值必须使用双引号不能用单引号更不能使用中文引号。很多从网页、微信聊天记录里直接复制的JSON内容经常会带入中文全角引号“ ”或者‘ ’这类错误最隐蔽肉眼几乎看不出来。再就是容易出现的括号不匹配问题。复杂的嵌套JSON比如一个对象里套着数组数组里又套着对象最后一层层的花括号和方括号很容易多写一个或者漏写一个VS Code虽然会用颜色高亮帮你定位但手工找起来依然费劲。还有漏写冒号或者逗号的问题例如{name 张三}这种写法缺少了键和值之间的冒号{a: 1 b: 2}这种则缺少了两个键值对之间的逗号。另外少数人会把注释写进JSON文件里比如{name: 张三 // 这是注释}这是绝对不行的JSON标准不支持注释最常见的是把带注释的JavaScript对象字面量直接当作JSON来用。最后重复键也是容易踩的坑{name: 张三, name: 李四}在解析时后一个值会覆盖前一个虽然不报错但数据已经不是你想要的了。1.2 为什么手工改JSON这么痛苦理论上说JSON格式错误都是可以手工修的但在真实场景里手工修复的效率和成功率都极低。原因有三个第一JSON文件往往嵌套层级很深一个真实的配置接口动辄四五层嵌套内部还有很长的数组人眼很难在几十行甚至几百行的结构里快速定位缺失的那个逗号或括号就像你在一个堆满杂物的房间里找一枚针头大。第二JSON里的字符串值可能包含各种转义字符比如\n、\u4f60这种Unicode转义看起来就像乱码手工修改时很容易动了不该动的字符导致原本只错一处的问题变成错三处。第三在实际开发流程中JSON文件经常是从接口返回、从数据库导出、或者从同事的聊天记录里复制的数据动辄几千行比如我处理过的翻译文件JSON一个语言包就是好几千行手工改既费时间又容易出错。所以你会发现真正高效的解决方案不是让自己变成“人肉JSON解析器”而是借助工具在编辑器层面实现自动修复。VS Code的优势就在于它内置了一套完整的JSON语言服务能够实时解析、校验、提示错误再配合插件生态就可以实现从定位错误到自动修复、再到格式化排版的完整闭环这就是写这篇的核心价值所在。2. VS Code原生能力不装插件也能自动修复2.1 内置格式化命令怎么用VS Code默认就提供了JSON格式化能力不需要安装任何插件。最常用的操作是打开一个JSON文件之后按快捷键Shift Alt FWindows/Linux或者Shift Option FmacOSVS Code会自动对整个文件进行缩进和排版。格式化并不仅仅是让代码变得好看它能让层级关系变得一目了然原本挤成一团的JSON被展开成清晰的树形结构嵌套关系、数组元素、键值对全都清清楚楚这样即便还有语法错误你找起来也快得多。除了全文件格式化VS Code还支持选中一段代码进行局部格式化。先用鼠标选中需要整理的片段然后右键点击选择“格式化选定内容”即可。这个功能在处理那些从别处粘贴进来、缩进和原文件不一致的片段时特别好用。另外还有个容易被忽略的操作在命令面板Ctrl Shift P里输入Format Document也可以触发同样的格式化效果。如果文件关联的语言模式不是JSON比如被识别成了纯文本需要先在右下角手动把语言模式切换为JSON格式化命令才会以JSON的形式工作。不过这里要强调一个关键点格式化只能解决“排版乱”的问题不能修复“语法错误”。你写了一个尾逗号格式化并不会自动帮你删除它它只是把文件重新排成整齐的缩进结构语法错误依然会存在。很多新手误以为“格式化”等于“修复所有错误”用完之后发现还是有波浪线就以为是工具坏了其实这只是理解偏差。2.2 保存时自动格式化VS Code可以设置成保存文件的瞬间自动执行格式化这一招对于维护规范格式非常有用。打开设置Ctrl ,搜索Format On Save把Editor: Format On Save选项勾上即可。这样每当文件被保存编辑器就会自动调用默认格式化器对整个文件做一次排版。如果希望只对JSON文件生效也可以使用语言特定的设置在settings.json里单独配置而不影响其他文件类型。我个人的习惯是开启保存自动格式化但对它有一些补充设置开启Format On Save Mode的话默认是file表示保存时格式化整个文件如果你更保守一点可以改成modifications这样只会格式化你本次修改的那部分内容改动范围更小diff的时候也更干净。对于团队协作项目来说这个细节尤其重要因为如果每次保存都把整个文件格式化一遍即使只改了一行也会产生大量无关的diff记录别人review代码的时候会崩溃的。另一个配套设置是Editor: Default Formatter。VS Code默认可能用的是自带的简要格式化器当你安装了Prettier等插件之后建议在设置里把默认格式化器指定为Prettier确保保存时的格式化和命令面板里的格式化都走同一套规则避免多次格式化结果不同。2.3 错误波浪线和快速修复当JSON文件存在语法错误时VS Code会在出错的字符位置显示红色波浪线鼠标悬停上去会看到具体的错误提示比如Expected , or } after property value。这是VS Code内置JSON语言服务在实时解析结果理论上只要你打开了文件它就会在后台持续工作。这个能力使得错误定位变成了“所见即所得”式的体验不用等到运行程序才报错。针对部分错误VS Code还提供了“快速修复”能力。把光标移到红色波浪线附近按下Ctrl .Windows/Linux或者Command .macOS会弹出可用的修复操作菜单。不过说实话JSON本身的语法错误比较刚性VS Code能提供的快速修复选项不如TypeScript那么丰富很多时候它只能告诉你发生错误的位置并不能一键帮你补全缺失的逗号或括号。所以我通常把快速修复当作辅助手段真正的自动修复合能力更多还是依赖外挂插件。此外VS Code还有一个很实用但经常被忽略的细节括号高亮匹配。把光标放在任意花括号或者方括号上编辑器会自动高亮配对的另一个括号用Ctrl Shift \可以在配对括号之间跳转。对于排查括号不匹配问题这个功能是救命级别的尤其是面对多层嵌套的JSON结构时你可以一层一层地检查括号配对情况快速定位到错误的位置。3. 装好这些插件修复能力直接翻倍3.1 Prettier格式化一把梭如果你只打算给VS Code装一个格式化插件我首选Prettier。它是我个人用过最省心的代码格式化工具支持JavaScript、TypeScript、CSS、HTML、Markdown以及JSON等主流格式格式化规则统一、配置简单、社区用户基数大。安装方式很简单打开扩展面板Ctrl Shift X搜索Prettier - Code formatter安装由Prettier团队发布的那一个即可。装好之后需要在VS Code设置里把默认格式化器改成Prettier。操作路径是设置 →Editor: Default Formatter→ 选择Prettier - Code formatter。之后按Shift Alt F或者保存时触发格式化都会使用Prettier的规则来整理JSON。Prettier对JSON的处理有一个很讨人喜欢的地方它会自动把单引号字符串改为双引号如果JSON字符串误用了单引号格式化之后Prettier会帮你纠正还会把尾逗号删除、把缺失的闭合括号做一些智能补全。虽然它不能像“魔法”一样修复所有错误但对于JSON这类结构简单的格式它能解决的格式问题数量非常可观。不过用Prettier有一个需要留意的地方它默认可能会把过长的数组或对象展开成多行拉高整个文件的行数。如果你希望某些数组保持在一行内可以在Prettier配置里调整printWidth的值或者直接在JSON文件的键值对结构上不做过多干预。在大文件场景下Prettier的格式化速度还算可以但超大的JSON几万行格式化时会让编辑器短暂卡顿这个我后面会专门讲到。3.2 JSON Tools专门处理JSON的瑞士军刀Prettier负责“好看”而JSON Tools这类插件负责“好用”。我还习惯装一个叫JSON Tools的插件它提供了一整套针对JSON的实用命令打开命令面板之后可以找到Sort JSON document可以对JSON对象按照键名排序Minify JSON document可以把JSON压缩成一行去掉所有多余空格JSON Lines to JSON可以把一行一个JSON对象的格式转换成标准JSON数组Stringify JSON document可以把JSON对象转成字符串还有Repair JSON document这种专门用于修复JSON格式问题的命令。尤其是Repair JSON document这条命令非常实用。它会尝试自动修复当前JSON文件中的常见语法错误包括尾逗号、缺失逗号、缺失冒号、缺失括号、单引号转双引号等。当然它并不是万能的遇到底层结构严重损坏的JSON它也可能只修复一部分剩余的红线需要你手动处理。但对大多数常见错误这一条命令就能搞定大半省去很多手工操作。另一个实用功能是JSON排序。在处理书源JSON、翻译文件JSON或者接口配置JSON时对象键的顺序往往没什么规律你想知道某个键是否存在、内容是什么得靠搜索。用JSON Tools的排序功能把键按照字母顺序排一遍后续维护会舒服很多。需要说明的是排序会改变原文件的对象键顺序所以执行之前最好确认这个JSON对象的键顺序没有业务上的敏感性有些后端接口会对键顺序做校验虽然少见但确实存在。3.3 其他值得装的JSON相关插件除了Prettier和JSON Tools还有几个插件我会根据项目需要选择安装。第一个是JSON Viewer它可以在编辑器内直接以树状结构浏览JSON数据尤其是在处理大JSON数据时比纯文本模式直观很多。第二个是Edit json它的功能主要集中在JSON的增删改上比如你可以用命令快速给某个JSON对象添加一个键值对或者快速在JSON数组里新增一个对象适合频繁编辑配置文件的场景。第三个是Bracket Pair Colorizer不过这个需要注意VS Code在新版本里已经内置了括号配色功能Editor Bracket Pair Colorization不需要额外装了如果是旧版本可以装一个。装了括号配色插件之后不同层级的括号会显示不同颜色排查括号嵌套错误时很直观。实际上插件并不是越多越好。我见过一些新手一口气装了大几十个插件结果互相冲突格式化行为变得不可预测。我的建议是格式化用Prettier修复和转换用JSON Tools大文件浏览用JSON Viewer这三件套已经足够覆盖绝大多数JSON处理场景了。装太多反而增加了配置成本遇到问题也不好排查。4. 实操实录一次完整的JSON报错排查与自动修复4.1 场景还原配置文件的逗号之痛为了把前面的方法串起来我模拟一个非常典型的场景。假设你下载了一份“书源合集json”打开之后发现文件内容挤成一团根本没法看而且VS Code底部显示了一堆错误。用JSON格式化命令时编辑器提示文件存在语法错误无法格式化。这个时候很多人就卡住了不知道从哪下手。我把这份JSON简化一下让你看看典型的“错误样本”长什么样{ bookSources: [ { name: 示例书源, url: https://example.com, tags: [小说, 文学,], rules: { searchUrl: /search?qkeyword, bookList: //div[classbook-item], } }, { name: 第二个书源 url: https://example2.com, } ], }你能快速看出几个错误至少有四个第一处是tags: [小说, 文学,]这个数组多了一个尾逗号第二处是bookList: //div[classbook-item],后面多了一个尾逗号第三处是name: 第二个书源和url: https://example2.com之间缺少了一个逗号第四处是整个对象结尾}后面多了尾逗号。这种混合错误在真实文件里到处都是手工修复不仅费时而且很容易看漏。4.2 用编辑器原生功能定位问题面对这种文件第一步不是修复而是“看清楚”。打开文件后把语言模式确认一下确保是JSON右下角显示“JSON”。然后按Ctrl P打开文件后直接看编辑器的“问题”面板Ctrl Shift M这里会列出VS Code解析出的所有语法错误包括错误的位置、描述和具体原因。通过点击问题列表里的条目你可以快速跳到对应的出错位置。通常第一个被标记的红色波浪线是最值得关注的位置。VS Code的JSON解析器在碰到无法继续解析的字符时会立刻报错所以排在列表最上面的错误往往就是导致文件结构彻底解析失败的“元凶”。先把最上面的一两个错误修好再查看问题面板往往错误数量会大幅减少因为后面的一串报错可能只是“连锁反应”。这种从“根因”入手的排查思路在修复JSON时非常重要。当你定位到一个错误比如某个数组里的尾逗号把光标移到那一行VS Code会用括号高亮帮你看清当前所在的结构层级。如果蓝色波浪线提示Expected , or } after property value那大概率说明当前这个地方缺一个逗号或者多了一个逗号对照上下文的键值对格式就能确认。整个过程虽然还是手工操作但相比对着几万行文件傻看效率已经高了很多。4.3 用插件一键修复如果文件错误比较多手工修太痛苦这时候就该轮到插件大显身手了。打开命令面板输入Repair JSON documentJSON Tools插件就会尝试自动修复这个文件。它会根据JSON语法规则补全缺失的逗号、冒号、括号删除多余的尾逗号把单引号转成双引号。执行完之后你会发现问题面板里的错误数量大幅减少有些情况下直接清零。修复完语法错误之后再执行一次格式化。打开命令面板输入Format Document或直接按Shift Alt FPrettier会按照统一规则把整个文件排版成干净的多行结构缩进统一、数组和对象的层级清晰可见。这个时候再看文件就舒服多了。如果文件里还有个别错误没有被自动修复红色波浪线会告诉你精确的位置你只需要手动补一下就好——修复完再格式化一次基本就能出干净的结果。需要特别提醒的是执行自动修复命令之前建议先给文件做一个备份尤其是那些原始文件被压缩成一行、且经过第三方工具生成的JSON。自动修复虽好但它本质上是基于规则猜测有可能把原本“虽然格式不规范但语义正确”的内容修改成“格式规范但语义变了”的版本万一改坏了你又没有备份想回退都难。我见过不止一次有人在线上环境直接执行修复导致JSON里的某个字符串值被误加转义字符、接口返回数据异常的情况。所以批量操作前一定要备份这是底线。5. 常见问题与排查技巧实录5.1 格式化了还是报错怎么办使用过程中最常见的一种情况按了格式化快捷键文件排版变好看了但红色波浪线还在问题面板里的错误也还在。这其实不是工具没用而是格式化只负责“排版”不负责“修错”。如果你的JSON里存在无法被Prettier或JSON Tools自动修复的结构性错误比如缺少了关键的闭合括号、字符串没有闭合格式化也无法自己猜出正确结构。遇到这种情况我的排查步骤是固定的第一步打开问题面板Ctrl Shift M看第一条错误不要去管后面的。第二步点击第一条错误跳到对应位置仔细检查光标前后的字符是不是引号没闭合是不是多了个逗号是不是花括号数量不匹配第三步修复完第一条之后再看问题面板通常错误数量会减少。重复这个过程直到问题面板清空。整个过程看似笨拙但比从最后一行往前找要靠谱得多。需要注意的一个细节是如果JSON文件非常小只有一两行且报错信息模糊建议先把文件内容复制出来放到一个在线JSON校验工具里验证一下确认是内容本身的问题还是编辑器解析的问题。编辑器因为文件编码或者语言模式识别错误导致的“假报错”虽然不常见但确实会出现。5.2 中文引号陷阱和特殊字符问题中文内容场景里被微信、网页编辑器、甚至某些文档软件复制出来JSON经常夹杂全角字符最常见的坑就是中文引号。一旦字符串被中文引号包裹JSON解析器直接报错红色波浪线会出现但你肉眼看起来几乎看不出区别因为中英文引号在大多数默认字体下长得太像了。排查的方法是把光标放在引号上看VS Code状态栏显示出的Unicode编码值英文双引号的Unicode是U0022中文双引号是U201C和U201D一旦发现是后者直接替换成英文双引号即可。如果要批量替换可以用VS Code的正则搜索替换功能搜索[“”]替换为但替换之后务必检查字符串内容避免误伤内容中的中文引号文本。此外还有几个特殊字符容易出问题。JSON字符串中不能直接包含未转义的控制字符比如换行符\n在字符串内部必须以\\n形式出现不能直接回车换行。如果文件内容里确实有原始换行符VS Code会报错你可能需要把多行文本拼接成一行并用\n转义符表示。这在我处理一些从Excel或CSV转换过来的JSON数据时尤其常见。还有一种情况是内容里包含反斜杠\比如Windows文件路径C:\Users\name在JSON字符串里必须写成C:\\Users\\name否则解析器会把\U当作Unicode转义序列去解析然后报“非法转义”错误。VS Code会比较贴心地用波浪线提示这类问题但初学者通常不知道原因以为是文件本身编码问题折腾半天。遇到这种问题直接替换\为\\就好但注意不要重复转义已经转义的内容。5.3 文件编码与换行符问题JSON文件本身的编码也可能导致怪异的报错。最典型的是UTF-8 BOM问题。VS Code默认通常以UTF-8无BOM编码保存文件但如果你在Windows上用过某些老旧文本工具文件可能是UTF-8带BOM的。BOM字节顺序标记是一段隐藏的编辑器前缀虽然正常时机不显示但在某些解析器看来它是非法字符会导致第一个键名解析失败。处理方式很简单在VS Code右下角点击编码信息选择“通过编码重新打开”改成“UTF-8”然后再“通过编码保存”为“UTF-8”不带BOM问题就解决了。换行符方面Windows平台常见的CRLF和Linux/macOS常见的LF一般不会直接导致JSON语法错误但如果你的JSON文件在版本控制环境里反复横跳可能产生大量diff噪声。建议在项目根目录放一个.editorconfig文件明确指定end_of_line lf、charset utf-8、insert_final_newline true这样不同平台上的开发者打开同一份JSON文件时格式化行为会更一致也能避免因为换行符不一致导致的差异问题。5.4 大文件格式化卡顿怎么办处理超大JSON文件比如几百MB的日志、数据导出时VS Code可能会变得卡顿格式化命令甚至会卡死几秒钟。遇到这种情况我一般不会直接硬格式化全文件而是先用命令面板里的JSON: Show JSON Path或者JSON Viewer插件来浏览结构确定要修改的范围。如果确实需要格式化可以考虑先用Minify JSON document把文件压缩成一行再手动针对需要修改的小片段做格式化或者使用Node.js脚本配合命令行工具比如json命令在终端里完成格式化这样比编辑器内操作更稳定。还有一个很实用的技巧在VS Code的设置里把Search: Use PCRE2相关的正则搜索能力打开配合正则表达式对大JSON文件做精准替换性能会比人工翻找高很多。比如你要把所有enabled: false改成enabled: true直接用正则搜索替换一次搞定不需要手动一行行看。至于说“保存时自动格式化大JSON文件导致卡顿”的问题我的建议是暂时关掉Format On Save或者把大JSON文件的语言模式临时切换成纯文本等你完成修改之后再切回JSON、手动格式化一次。这样既能避免编辑过程的卡顿又能保证最终输出格式规整。6. 批量处理JSON文件把自动化进行到底如果你手头不止一个JSON文件需要修复而是一整个目录下的几十个文件都有格式问题那么在VS Code里一个个打开再格式化效率还是太低。这时候我推荐用VS Code的“搜索 替换”能力配合任务运行器或者直接把命令行工具引入工作流。很多人不知道VS Code在2020年之后版本中搜索面板里已经支持了针对多个文件的批量替换并且支持正则。你可以用正则表达式去匹配尾逗号之类的常见错误模式在搜索面板里确认预览之后点击“全部替换”一次性清理掉所有文件中的相同问题。当然批量替换尾逗号这类操作要非常小心正则误匹配的可能性不低尤其是JSON中的字符串内容也可能包含看起来像尾逗号的文本。我的做法是先在一个文件上做小范围测试确认替换结果无误之后再切到多个文件搜索替换。并且在执行大范围替换之前确保目录在Git或者SVN等版本控制之下万一改错了能一键回滚。此外还有更硬核的方案如果你的项目是Node.js环境可以用命令行工具jsonnpm包名json来做格式化、修复和排序如果是Python项目可以用内置的json.tool模块。在VS Code终端里运行python -m json.tool input.json output.json可以完成操作。这些方法适合对文件数量大、格式问题统一明显的场景。但日常手动维护少量JSON文件时VS Code Prettier JSON Tools的组合已经绰绰有余了。7. 关于自动修复JSON再补几个避坑心得先说说我的结论自动修复JSON格式错误这件事本质上是用工具替代“人肉纠错”但它替代不了“业务理解”。工具能帮你把尾逗号删掉、把引号纠正、把缩进整理好但它不知道你这份JSON的本意是什么。所以每次执行自动修复之前我都会先确认两件事这个文件是从哪里来的修改之后会被谁消费。如果是接口数据文件最好在修复之后用相关脚本跑一遍解析测试如果是配置文件修复完必须重新加载验证效果不要只看编辑器没报错就以为万事大吉。其次一定要养成配置文件“版本化”的习惯。我在实际操作中吃过亏——有一次手头一份翻译文件JSON格式乱掉我直接让JSON Tools做了自动修复修复完以后确实没有语法错误了但后来发现它把某几个键值对里的中文标点自动替换成了英文标点导致几个页面上的文案显示异常问题排查花了一个下午。从那以后我处理任何来源不明的JSON文件之前都会先用Git提交一个原始版本或者手动复制一份备份然后再动手修复。这可以说是我踩坑多次之后最深刻的经验。还有一个小技巧如果你发现自己经常需要处理格式混乱的JSON可以给自己预设一个固定的处理流程。比如我的肌肉记忆已经变成了打开文件 →Ctrl Shift M看错误 → 先修第一条错误 → 再按Shift Alt F格式化 → 再Ctrl Shift M复查 → 最后用JSON Tools做排序或压缩。这套流程走下来绝大多数JSON文件都能在几分钟之内处理干净。效率比一开始就乱点按钮高得多。最后再分享一个很多人没注意到的功能VS Code的JSON语言模式支持JSON Schema校验。当你安装了相关扩展或项目里配置了SchemaVS Code不仅能检查语法错误还能检查字段名是否拼错、字段类型是否符合预期甚至下拉提示可选项。这个功能在处理复杂配置JSON文件时效果远远超过单纯的语法修复。如果你在用某个框架、某个工具的配置文件不妨去看看它有没有提供对应的JSON Schema把它配上VS Code的自动修复和校验能力会上一个台阶。