VSCode JSON语法校验需满足语言模式为json且json.validate.enable为true;工作区设置优先覆盖全局设置;保存时格式化不等于语法检查,校验依赖实时语言服务而非保存行为。

VSCode 默认就开启 JSON 语法校验,无需额外插件;但“全局配置”容易被工作区设置覆盖,“保存时校验”本质是格式化行为,不是语法检查。
JSON 语法校验为什么有时不报错?
校验功能依赖两个硬性条件:语言模式必须是 json(不是 jsonc 或 Plain Text),且 json.validate.enable 必须为 true(默认就是 true)。
DMap GL地图JSAPI(dmapgl)开发指南。用于编写、审查、调试 DMap 地图 API 代码,涵盖地图初始化、覆盖物渲染、图层管理、事件处理、控件交互等任务。当用户提及 dmap、dmapgl、jsapi‑gl 或相关地图开发需求时自动触发。
- 右下角状态栏显示非
json时,快捷键Shift+Alt+F和红线提示都会失效 - 常见误判场景:粘贴内容后仍为
Plain Text模式;文件扩展名不是.json(如.config);.vscode/settings.json中通过files.associations错误映射了扩展名 - 校验只查语法(比如逗号遗漏、引号不闭合、单引号使用),不查语义(比如字段名拼错、数字超 JS 安全整数范围)
保存时自动格式化 ≠ 自动校验
很多人以为开启 editor.formatOnSave 就能“保存即检查”,其实它只是调用格式化器美化结构,不会触发语法错误标记。真正报错靠的是语言服务的实时解析,和是否保存无关。
- 确保
"json.format.enable": true(默认已开),否则Shift+Alt+F会提示“找不到格式化程序” - 若装了 Prettier,它可能劫持
.json文件的格式化行为——加配置"prettier.disableLanguages": ["json"]或显式指定"[json]": {"editor.defaultFormatter": "vscode.json-language-features"} -
editor.formatOnSave是语言级配置,必须写成"[json]": { "editor.formatOnSave": true },不能只写顶层"editor.formatOnSave": true(那会作用于所有语言)
全局设置 vs 工作区设置谁生效?
VSCode 优先读取项目根目录下的 .vscode/settings.json,它会完全覆盖用户级设置(~/.vscode/settings.json)。所谓“全局配置”,在实际协作中往往形同虚设。
- 想让 JSON 校验和格式化在所有项目统一生效,得把关键项写进每个项目的
.vscode/settings.json,例如:
{
"json.validate.enable": true,
"json.format.enable": true,
"[json]": {
"editor.formatOnSave": true,
"editor.defaultFormatter": "vscode.json-language-features"
}
}
.vscode/settings.json,但没配 JSON 相关项,那它就会 fallback 到用户设置——但一旦你改过用户设置里的 editor.formatOnSave,就可能意外影响所有语言files.associations 如果在用户级设置里写了 "*.config": "json",而某个项目又在工作区里把它改成 "*.config": "shellscript",那这个扩展名就彻底脱离 JSON 校验范围了

















