vscode格式化json文件无需插件,只需确保语言模式为json且语法合法,按shift+alt+f(win/linux)或shift+option+f(macos)即可生效;常见问题多因语言模式错误(如plain text)或语法不合法(单引号、注释、中文引号、零宽字符)导致。

VSCode 不能“运行”JSON 文件——它不是可执行代码,而是数据交换格式。所谓“运行”,实际指验证语法合法性、格式化为可读结构、或配合 schema 实现字段级补全与校验。
为什么 Format Document 按钮是灰色的
灰色 = VSCode 不识别当前文件为 JSON。它根本没加载 JSON 语言服务,所有功能都不可用。
- 右下角状态栏显示的是
Plain Text、JSON with Comments或JavaScript—— 点击它,手动选JSON(不是JSONC) - 文件没有
.json后缀(比如叫config、data或.env.json)——用快捷键Ctrl+K M(Win/Linux)或Cmd+K M(macOS),输入json回车 -
json.format.enable被设为false(极少见,但有人误关)——在设置中搜该配置项,确认值为true
格式化失败的真正原因不是插件,而是语法非法
VSCode 内置 JSON 格式化器只处理合法 JSON。一旦解析失败,它连缩进都不做,直接报错或静默失效。
- 用了单引号:
'name': 'alice'→ 必须改成双引号:"name": "alice" - 含中文引号:
“key”→ 替换为英文双引号:"key" - 带注释:
// comment或/* ... */→ JSON 标准不支持;如需保留,切到JSONC模式,但此时内置格式化器不生效 - 存在零宽字符(尤其从微信、PDF、邮件复制)——可用正则
/[\u200b-\u200f\u202a-\u202f\u2060-\u206f\ufeff]/g全局替换为空
怎么让 JSON 自动格式化且不踩坑
启用 editor.formatOnSave 很方便,但容易在编辑中途触发报错(比如删了逗号还没补上)。关键在于控制作用域和行为边界。
- 在
settings.json中加这两行即可生效(无需插件):"editor.formatOnSave": true"json.format.enable": true - 想保留大数组的手动换行(避免格式化后挤成一行)——设
"json.format.keepLines": true - 若装了 Prettier,它默认不处理
.json文件;要么加配置:"prettier.disableLanguages": ["json"],要么显式指定:"[json]": {"editor.defaultFormatter": "vscode.json-language-features"} - 缩进空格数由
json.tabSize控制(优先于全局editor.tabSize),设为4就输出 4 空格
校验 ≠ 格式化,别指望格式化按钮修语法
按 Shift+Alt+F 只美化结构,不修复缺失引号、漏逗号、括号不匹配等错误。这些必须靠校验发现。
- 确保
json.validate.enable为true(默认开启) - 错误会以红色波浪线标出,位置比报错文字更准;常见提示如
Invalid character、Expected comma or } - 整段变灰或无高亮?可能是 BOM 头(
\uFEFF)——打开开发者工具(Ctrl+Shift+I),看 Console 里JSON.parse()的原始报错 - 加
"$schema"字段能激活字段补全和语义提示,例如:"$schema": "https://json.schemastore.org/package.json"
最常被忽略的不是设置,是语言模式切换动作本身——粘贴完一段 JSON,顺手点一下右下角选 JSON,比查报错快十倍。











