lsp-json装了没提示,是因为schema未正确绑定而非插件失效;需确保文件类型为json、file_match精确匹配路径、url用相对路径且无bom,优先采用注释方式声明@schema。

装了 LSP-json 插件但没提示?大概率是 Schema 没绑对,不是插件没起作用。
为什么 LSP-json 装了却没 Schema 提示
LSP-json 本身不带 Schema,它只负责“加载并应用”你指定的 schema 文件。如果你的 application.json 里写了 "$schema": "./schema.json",但 Sublime 并不认这个字段——它只认你在 LSP 配置里显式声明的映射规则。
- 文件类型必须是
JSON(右下角显示“JSON”,不是“Plain text”或“JavaScript”) -
schemas配置里的file_matchglob 模式必须精确匹配实际路径(比如"**/config/*.json"不会匹配./application.json) - Schema 文件路径必须是相对项目根目录的路径,不能用
file://协议("url": "./schemas/base.schema.json"✅,"url": "file:///path/to/schema.json"❌) - 如果 Schema 里用了
$ref,被引用的文件必须存在、UTF-8 无 BOM、且也在项目内可访问
LSP-json 绑定 Schema 的三种可靠方式
优先级从高到低:注释 > 同目录 schema.schemas 列表。建议只用一种,避免冲突。
- 在 JSON 文件顶部加注释:
// @schema ./schemas/order-service.schema.json(路径相对于当前文件) - 把 Schema 放到同目录,命名为
schema.application.json(注意命名格式,schema.+ 原文件名 +.json) - 全局配置写在
Packages/User/LSP-json.sublime-settings里:{ "schemas": [ { "file_match": ["**/service-config.json"], "url": "./schemas/microservice.schema.json" } ] }
Schema 加载了但没报错?检查这三个硬性条件
控制台显示 Loaded schema from … 只代表文件读进来了,不代表校验已生效。
- 打开
Preferences → Package Settings → LSP → Settings,确认"diagnostics_enabled": true - 再打开
Language-specific Settings → json,确保"enabled": true且"diagnostics": true - 用命令行验证 Schema 本身是否合法:
jsonschema -i application.json schemas/order-service.schema.json;若报错,LSP-json 会静默跳过整个 Schema
微服务配置里 enum / if-then-else 不生效?注意 Draft 版本兼容性
LSP-json 底层调用的是 vscode-json-languageserver,默认支持 Draft-07。如果你的 Schema 是 Draft-04 写的(比如老版本 Swagger/OpenAPI 转换出的),if/then/else 和部分 enum 校验会直接失效。
- 检查 Schema 顶部是否有
"$schema": "https://json-schema.org/draft/2020-12/schema"或至少"https://json-schema.org/draft-07/schema" - 避免混用
type: "string"和enum: [1, 2, 3](数字枚举要配type: "number") - 嵌套
if/then/else时,确保每个分支都定义了properties或required,否则 LSP 可能忽略整块逻辑
最常被忽略的其实是文件编码和路径斜杠——Windows 上用反斜杠写路径、Schema 文件带 BOM、或者 file_match 多了个空格,都会让整个 Schema 绑定彻底静默失败。











