sublime text默认不校验json语法,需安装sublimelinter+sublimelinter-jsonc插件并正确设置文件类型为json或jsonc;schema校验需手动绑定路径,注意协议、编码、格式及约束匹配。

JSON语法错误在Sublime里根本不会自动标红?
Sublime Text默认不校验JSON语法,哪怕写成 {key: "value"}(没引号的key)或漏掉逗号,它也只当普通文本高亮——这不是bug,是设计如此。想真能报错,得靠插件补能力。
实操建议:
- 装
SublimeLinter+SublimeLinter-jsonc(推荐),不是SublimeLinter-jshint或其他JS校验器——后者会把合法JSON当JS语法报错 - 确保文件类型设为
JSON(右下角点击切换,别留成Plain Text) - 如果用了
.jsonc(带注释的JSON),必须用jsonc校验器,标准json解析器直接拒掉//注释
JSON Schema校验要生效,必须配对三个东西
光有Schema文件没用。Sublime不会自己猜哪个JSON该用哪个Schema——得手动绑定,而且绑定方式取决于你用的插件。
常见错误现象:
- 写了
"$schema": "https://example.com/schema.json",但Sublime毫无反应 → 缺少插件支持或路径未被识别 - 本地Schema文件路径用
file:///协议,Windows上容易因反斜杠转义失败 → 改用正斜杠或双反斜杠
实操建议(以 JSON Schema Validator 插件为例):
- 在Sublime设置里加配置项:
"schemas": [{"file_match": ["*.api.json"], "schema": "file:///path/to/api-schema.json"}] -
file_match是glob模式,不是正则;*.config.json匹配app.config.json,但不匹配config.json - 如果Schema带远程URL,确保插件启用了网络请求(有些版本默认关)
校验报错但内容明明合法?检查这三处
JSON本身没错,但校验器报错,大概率是Schema和实例的“契约”没对齐。
典型场景:
-
"type": "integer"的字段填了123.0→ JSON里这是number,不是integer,校验失败 - Schema定义了
"required": ["id"],但JSON里"id": null→ null不满足required(除非显式允许) - 用了
"additionalProperties": false,但JSON多了一个没在properties里声明的字段 → 直接拒
调试技巧:
- 用在线工具(如
jsonschemalint.com)单独验证Schema语法是否正确,避免Sublime里报错信息模糊 - 临时删掉Schema里的
required或additionalProperties,看是否还报错,快速定位约束源头
Mac/Windows/Linux下路径和编码容易不一致
Schema文件路径写错、JSON文件编码非UTF-8,都会让校验静默失效——不报错,也不提示,就像没配一样。
关键细节:
- Sublime默认用系统编码读文件,如果JSON是GBK保存的(尤其Windows旧编辑器导出),校验器可能解析失败 → 统一存为UTF-8无BOM
- Mac/Linux用
file:///Users/name/schema.json,Windows必须写file:///C:/path/schema.json(开头三个/,盘符后是/不是\) - 路径含空格或中文?URL编码一下,比如
%20代替空格,否则部分插件直接忽略
校验器日志通常不输出,遇到“没反应”,先查Sublime控制台(Ctrl+`)有没有 JSON Schema 相关的加载错误或404。











