vscode 默认支持 json 格式化,但需确保语言模式为 json(非 jsonc 或 plain text),并检查格式化配置、插件冲突及语法合法性;校验仅查语法,不修语义错误。

VSCode 默认就能格式化 JSON,但必须确保文件被正确识别为 json 语言模式,否则 Shift+Alt+F(Windows/Linux)或 Shift+Option+F(macOS)会失效或触发错误的格式化器。
如何确认当前文件是 JSON 模式
右下角状态栏会显示当前语言模式,比如 Plain Text、JSON 或 JSON with Comments。如果显示不是 json,点击它,从弹出菜单中选择 JSON(不是 JSONC,除非你明确需要支持注释)。JSONC 模式下格式化能保留注释,但校验会跳过注释行;纯 json 模式遇到注释会直接报错。
常见误操作:
- 复制粘贴 JSON 后未手动切换语言模式,仍为
Plain Text - 文件后缀不是
.json(如.config、.env.json),VSCode 无法自动识别 - 项目根目录有
.vscode/settings.json覆盖了files.associations,把本该是json的扩展名映射到了其他语言
快捷键格式化不生效?检查这三个地方
格式化失败通常不是插件问题,而是配置或权限链路中断:
-
"editor.formatOnSave"开启后,保存自动格式化——但前提是当前文件语言模式为json,且没有启用冲突的第三方格式化器(如 Prettier 默认不处理.json文件) - 检查
settings.json中是否禁用了内置 JSON 格式化器:"json.format.enable": true必须为true(默认就是true) - 如果装了
prettier插件,它可能劫持了json格式化行为。可在用户设置中加:"prettier.disableLanguages": ["json"],或在工作区设置中指定"[json]": {"editor.defaultFormatter": "vscode.json-language-features"}
JSON 校验失败时 VSCode 怎么定位错误
VSCode 内置 JSON 支持实时语法校验,红线提示位置往往比错误信息更准:
- 典型报错如
Invalid character,大概率是末尾多逗号、字符串没闭合、使用了单引号、或 Unicode BOM 头导致解析失败 - 若整段变灰或无高亮,可能是文件开头存在不可见字符(如
\uFEFF),可用命令面板运行Developer: Toggle Developer Tools,在 Console 查看JSON.parse()报错详情 - 校验不报错但数据读取异常?检查数字是否超出 JavaScript 安全整数范围(
9007199254740991),VSCode 不校验语义,只校验语法
最易被忽略的是:VSCode 的 JSON 格式化器不会修正键名的引号缺失(比如 {name: "alice"} 是非法 JSON,但格式化后仍保持原样,仅调整缩进;它只对合法 JSON 做美化。校验和格式化是两件事,别指望格式化按钮帮你修语法。











