VSCode 自动格式化 JSON 无需插件,内置 vscode.json-language-features 即可稳定准确处理,且原生支持 .jsonc;Shift+Alt+F 无反应主因是语言模式非 JSON,需点击右下角手动切换,并为 JSON/JSONC 单独配置 editor.defaultFormatter 避免 Prettier 冲突。

VSCode 自动格式化 JSON 不需要额外插件——内置的 vscode.json-language-features 就够用,而且更稳、更准、不改引号、不删空格、原生支持 .jsonc。
装 Prettier 或其他 JSON 格式化插件,反而容易踩坑:比如把 true 错写成 True、删掉注释、把双引号换成单引号、或在 package.json 的 "scripts" 字段里胡乱换行。
为什么 Shift+Alt+F 没反应?先看右下角语言模式
VSCode 所有 JSON 相关功能(格式化、校验、补全)都依赖一个前提:当前文件必须被识别为 JSON 语言模式。
常见错误现象:
- 按
Shift+Alt+F没反应,或弹出“找不到格式化程序” - 语法错误没波浪线,
"json.validate.enable"设置为true也无效 - 粘贴一段压缩 JSON 后,右下角显示的是
Plain Text或JavaScript
实操建议:
- 点击编辑器右下角状态栏的语言标识(如
Plain Text),选择JSON - 若文件无后缀(如剪贴板粘贴的响应体),可临时新建文件 → 粘贴 → 保存为
temp.json再操作 - 快捷键
Ctrl+K M(Win/Linux)或Cmd+K M(macOS)直接呼出语言模式切换面板,输json回车
editor.defaultFormatter 被 Prettier 劫持了怎么办
很多用户装了 Prettier - Code formatter 后,发现 JSON 格式化变奇怪:缩进错乱、引号被改、注释消失、甚至报 Unexpected token —— 这不是 bug,是配置冲突。
根本原因:editor.defaultFormatter 是全局设置,而 Prettier 默认不处理 JSON,除非你手动加 "parser": "json";但即使加了,它仍会破坏 JSON 合法性(比如大小写、尾随逗号、注释)。
正确做法是:给 JSON 单独指定格式化器,不干扰其他语言。
打开 settings.json,添加:
{
"[json]": {
"editor.defaultFormatter": "vscode.json-language-features"
},
"[jsonc]": {
"editor.defaultFormatter": "vscode.json-language-features"
}
}这样,.json 和 .jsonc 文件就只走 VSCode 原生逻辑,Prettier 继续管 JS/TS/HTML,互不干扰。
想格式化 JS 里的 JSON 字符串?别指望自动识别
你在写 fetch 请求时硬编码了一段 JSON 字符串,比如:
const data = '{"name":"Alice","age":30}';这时候选中这串内容按 Shift+Alt+F,VSCode 不会理你——因为当前语言模式是 javascript,不是 JSON。
实操建议:
- 复制字符串内容 → 新建空白文件 → 点右下角切为
JSON→ 粘贴 →Shift+Alt+F→ 复制回原位置 - 或用命令面板
Ctrl+Shift+P→ 输入Format Selection,但前提是:你得先把光标所在文件的语言模式设为JSON(否则它只会按 JS 规则格式化,结果可能非法) - 不要依赖“JSON in String”类插件,它们多数靠正则提取,遇到嵌套引号、转义字符就崩
关键点其实就一个:VSCode 的 JSON 支持是「按语言模式激活」的,不是「按文件内容猜测」的。很多人卡在第一步——没确认右下角是不是 JSON,就急着装插件、调配置、查文档,绕远路。


















