lsp-json需手动绑定schema才生效,因其不自动解析文件名或$schema字段,依赖显式配置;校验前须确认diagnostics_enabled为true、文件scope正确(source.json/jsonc)、schema路径相对且无bom、file_match精准匹配。

timeout_ms 或填错 "env": "prod" 这类错误。
为什么 LSP-json 要手动绑定 Schema 才生效
LSP-json 本身不解析文件名或 $schema 字段,它依赖显式配置来决定加载哪个 Schema。常见误区是以为加了注释 // @schema ./schema.json 就万事大吉——但路径必须相对当前文件,且不能含 file:// 协议。
- 优先用注释声明:
// @schema ./schemas/service-config.schema.json(路径从当前文件所在目录算起) - 次选用同目录命名规则:
schema.<filename>.json</filename>,例如配置文件叫application.json,就在同一级放schema.application.json - 全局映射写在
LSP-json.sublime-settings里,"file_match"必须匹配实际路径,比如"**/config/*.json"不会匹配./config.json(缺了斜杠) - Schema 文件本身需 UTF-8 无 BOM,若含
$ref,被引用文件也得在项目内、路径可访问
LSP-json 加载了 Schema 却不报错?先查这三处
控制台显示 Loaded schema from … 只代表读取成功,不代表校验已启用或 Schema 有效。
- 确认诊断已打开:在
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,避免 Draft-04 语法在 Draft-07 服务器上失效 - 检查
file_match是否命中:打开控制台(Ctrl+`),搜索实际打开文件的路径,对比 glob 模式是否大小写敏感、是否漏掉前导/或多余空格
微服务配置校验和普通 JSON 格式化根本不是一回事
Pretty JSON 或 JSON Tools 只能告诉你 { 缺了 },而 LSP-json 能指出 "retry_count" 应为整数、"region" 必须是枚举值之一、"fallback" 在 "strategy": "circuit-breaker" 下为必填字段——这些靠的是 JSON Schema 的 if/then/else、enum、required 等能力。
- 别混用
SublimeLinter-jsonc和 LSP-json:前者只做语法级校验,后者做语义级;同时启用可能造成重复提示或冲突 - 多环境配置建议用 Schema 的
oneOf+ 条件分支,而不是维护多个独立 Schema 文件 - 如果 Schema 里用了远程
$ref(如"https://example.com/schema.json"),确保 LSP-json 设置中启用了网络请求(默认可能关闭)
source.json 或 source.jsonc 生效,哪怕后缀是 .json,右下角显示的是 Plain text,它就完全不工作。










