lsp-json 是 sublime text 唯一支持 json schema 动态校验的插件,需安装后重启,并通过文件注释、同目录 schema 文件或全局配置绑定 schema 路径,且须确保 file_match 匹配、schema 有效、诊断启用、文件类型为 json。

Sublime Text 默认不校验 JSON Schema,必须手动绑定 Schema 文件路径并启用对应插件,否则 $schema 字段、字段类型、required 等约束全无反应。
装对插件:LSP-json 是唯一支持 Schema 动态校验的方案
别用 Pretty JSON 或 SublimeLinter-jsonc——它们只做语法检查,不读 $schema,也不验证字段是否存在或类型是否匹配。真正能加载本地/远程 Schema 并实时标红错误的,只有 LSP-json(基于 vscode-json-languageserver)。安装路径:Ctrl+Shift+P → Install Package → 搜 LSP-json → 安装。装完后需重启 Sublime,否则 LSP 服务不启动。
绑定 Schema 的三种方式,优先级从高到低
插件装好只是第一步,关键是要让 LSP-json 知道“这个 JSON 文件该用哪个 Schema”。它按以下顺序查找:
详细的 Three.js 3D 图形参考,涵盖场景设置、相机、几何体、材质、光照、动画、控制器、加载器、数学工具和调试。
- 文件顶部注释:
// @schema ./schemas/config.schema.json(路径相对于当前文件) - 同目录下存在
schema.<filename>.json</filename>(如schema.app.json对应app.json) - 全局配置:
Preferences → Package Settings → LSP → Settings中添加schemas列表,例如:{ "schemas": [ { "file_match": ["**/config/*.json"], "url": "./schemas/microservice-base.schema.json" } ] }
注意:url 必须是相对路径(不支持 file:// 或 https://),且 Schema 文件本身编码必须为 UTF-8(无 BOM)。
常见失效原因:不是没配,而是配错位置或路径
现象是控制台显示 Loaded schema from … 却不报错?大概率卡在这几处:
-
file_match没命中:比如写成config/*.json,但文件实际在src/config/app.json;应改用**/config/*.json - Schema 本身无效:用命令行验证:
jsonschema -i app.json schemas/config.schema.json,避免 Draft-04 语法在 Draft-07 环境下静默失败 - 诊断未开启:确认
LSP.sublime-settings中"diagnostics_enabled": true,且Language-specific Settings → json里"enabled": true和"diagnostics": true均已启用 - 文件类型不是 JSON:右下角状态栏必须显示
JSON,不是Plain text或JSONC(LSP-json不处理.jsonc)
校验生效后仍要人工核对业务逻辑
Schema 只管结构契约:字段名、类型、是否必填、枚举值范围。它不会告诉你 "env": "prod" 是否真的指向一个已部署的环境,也不会发现 "timeoutMs": "5000"(字符串)该是数字。更隐蔽的是引用一致性问题——比如 serviceA 配置里写的 "version": "v2",和 serviceB 的兼容性声明是否匹配,Schema 无法推导。这类约束得靠文档约定或额外脚本扫描。










