必须用 $schema 字段显式声明,路径须为相对路径(如"./schema.json")、file:///协议绝对路径(如"file:///d:/schema.json")或url,禁用本地绝对路径(如"c:\schema.json"),否则校验静默失效。

必须用 $schema 字段显式声明,且路径不能是本地绝对路径(如 C:\schema.json)——否则校验静默失效。
JSON 文件里怎么写 $schema 才有效
VSCode 不会自动猜你要用哪个 Schema,必须在 JSON 文件顶部手动加 $schema 字段。它只接受两种格式:
- 相对路径:例如
"$schema": "./schemas/config.schema.json",路径相对于当前 JSON 文件所在目录 - URL:例如
"$schema": "https://json.schemastore.org/tsconfig.json"或"$schema": "file:///D:/myproject/schemas/deploy.schema.json"(注意 Windows 下是三个斜杠,盘符大写)
常见错误包括:
- 写了
"$schema": "C:\schemas\config.json"—— VSCode 直接忽略,不报错也不提示 - 用了反斜杠
\但没转义,或路径含中文/空格未编码 - Schema 文件本身语法非法(比如少逗号、用了 Tab 缩进),会导致整个校验链中断
为什么加了 $schema 还没提示?检查语言模式和控制台
即使 $schema 写对了,也可能“看起来没反应”,优先排查这三点:
- 右下角状态栏语言模式是不是
JSON?不是JSON with Comments或Plain Text—— 后两者不触发 Schema 校验 - 按
Ctrl+Shift+P打开命令面板,运行Developer: Toggle Developer Tools,在 Console 里搜schema或404,看是否请求失败 - 打开设置搜索
json.validate.enable,确认值为true
特别注意:如果 Schema 里用了 $ref 引用其他文件,那些被引用的子 schema 也得能被 VSCode 访问到,否则校验会静默跳过,不报错也不提示。
不改 JSON 文件时,怎么强制绑定 Schema
很多配置文件(如 tsconfig.json、deploy-config.json)你没法加 $schema 字段,这时得靠 VSCode 的 json.schemas 设置:
- 在项目根目录的
.vscode/settings.json中添加配置项 -
fileMatch必须是 glob 模式,且路径相对于工作区根目录,例如"**/deploy-config.json"或"package.json" -
url支持file://协议或网络地址,不能写成相对路径如./schema.json(那是$schema字段才认的)
示例配置:
"json.schemas": [
{
"fileMatch": ["**/clinical-data.json"],
"url": "file:///D:/proj/schemas/clinical.schema.json"
}
]
如果 fileMatch 没匹配上,VSCode 完全不吭声,只会“没反应”——这是最常被忽略的盲点。
大型 Schema 下补全卡顿、提示消失怎么办
含深度 oneOf、复杂正则 pattern 或远程 $ref 的 Schema 会让 VSCode 的 JSON 语言服务器变慢,甚至阻塞补全:
- 把高频使用的字段定义抽成独立
$ref文件,避免重复解析 - 移除调试阶段不用的
description或default,它们虽不影响校验,但会拖慢提示渲染 - 远程 Schema 尽量用 CDN 缓存地址,避免每次编辑都重新下载
真正难处理的不是语法错误,而是嵌套 $ref 路径写错、或 fileMatch 和实际文件位置差了一层目录——这种问题不会报错,只会让你以为功能坏了。











