VS Code JSON格式化失败主因是语言模式未设为JSON、默认格式化器配置错误或存在注释/语法问题;需确认右下角语言模式为JSON、设置editor.defaultFormatter为vscode.json-language-features,并清除非法字符与冲突配置。

JSON格式化失败:vscode没反应或报错Unexpected token
常见现象是粘贴一串压缩的JSON(比如从网络请求复制来的),按 Shift+Alt+F 没反应,或者弹出错误提示 Unexpected token。这不是VS Code的问题,而是当前文件没被识别为JSON——它可能被当成了纯文本(Plain Text)或JavaScript文件。
实操建议:
- 先确认右下角语言模式显示的是
JSON(不是JSON with Comments或JavaScript);点一下那里,手动选JSON - 如果文件后缀不是
.json(比如是.txt或无后缀),重命名成.json,或在命令面板(Ctrl+Shift+P)里运行Change Language Mode并选JSON - 若内容含单行注释
//或尾随逗号,VS Code默认JSON解析器会直接报错,得先删掉——JSON with Comments是另一种语言模式,不支持标准格式化
快捷键不管用?检查editor.defaultFormatter配置
VS Code 1.85+ 默认禁用了内置JSON格式化器,改用更严格的 vscode.json-language-features,但它的格式化能力依赖你是否装了对应扩展或设置了默认格式化工具。
实操建议:
- 打开设置(
Ctrl+,),搜defaultFormatter,找到Editor: Default Formatter,确保 JSON 语言的值设为vscode.json-language-features - 如果之前装过 Prettier,它可能劫持了JSON格式化——进设置搜
json.format.enable,确认它是true;再检查[json].editor.defaultFormatter是否被覆盖成esbenp.prettier-vscode(Prettier对JSON支持有限,容易丢空格或改引号) - 临时验证:在JSON文件里按
Ctrl+Shift+P→ 输入Format Document回车,看是否成功——这能绕过快捷键绑定问题
想一键美化带换行/缩进混乱的JSON字符串(非文件)
比如你在写代码时,把一个长JSON字符串硬编码在JS里,想快速格式化它本身,而不是整个JS文件。
实操建议:
- 选中那段JSON字符串(注意:必须是合法JSON,不能含变量、表达式或未转义的换行)
- 按
Ctrl+Shift+P→ 运行Format Selection(不是Format Document) - 前提是当前编辑器语言模式是
JSON;如果选中的是JS里的字符串,VS Code默认不会识别——可临时复制出来,新建.json文件粘贴再格式化,完事再粘回去 - 别依赖插件“自动格式化字符串”,多数有兼容问题;原生
Format Selection在纯JSON片段上最稳
格式化后引号变成单引号 or 缩进变2空格?这是配置冲突
标准JSON只允许双引号,但如果你看到格式化结果用了单引号,或缩进突然变成2空格(而非默认4),说明有扩展或工作区配置在干预。
实操建议:
- 查工作区根目录下的
.editorconfig,删掉或注释掉indent_size、quote_type相关行(JSON不认 quote_type) - 禁用所有非必要JSON相关扩展(比如
JSON Tools、JSON Ext),只留VS Code自带能力 - 检查用户设置里有没有全局配了
json.format.indentSize,这个值默认是2,但很多人习惯4——改成4即可
JSON格式化看着简单,真正卡住人的往往不是功能有没有,而是语言模式、默认格式化器归属、和周边配置的隐性冲突。调一次,记牢三处位置,后面就不用反复猜了。


















