在JSON Schema中定义title/description属性遇WebStorm校验错误,如何解决?
问题描述
我定义了一个包含description和title属性的JSON Schema,代码如下:
{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "description": { "type": "string", "description": "a description" }, "title": { "type": "string", "description": "a title" } } }
WebStorm的Schema校验器报错:类型不兼容:需要字符串,实际为对象。请问该如何正确定义这些属性?或是校验器存在bug?
解决方案
这不是校验器的bug,是JSON Schema的元数据关键字与自定义属性命名冲突导致的识别混淆:
- JSON Schema中的
title和description是顶级元数据关键字,默认用来描述Schema本身,WebStorm的校验器会优先把它们识别为元数据(要求是字符串类型),而你在properties里将它们定义为对象类型的属性,因此触发类型不兼容错误。
可以通过两种方式解决:
- 明确区分元数据与自定义属性(推荐)
在Schema顶级添加元数据关键字,明确描述Schema本身,同时保留properties里的自定义属性定义:{ "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "自定义对象Schema", "description": "包含描述和标题属性的业务对象", "type": "object", "properties": { "description": { "type": "string", "description": "业务对象的描述文本" }, "title": { "type": "string", "description": "业务对象的标题文本" } } } - 调整WebStorm校验设置
进入Settings > Languages & Frameworks > Schemas and DTDs > JSON Schema Mappings,检查当前文件关联的Schema规则,确保没有冲突;或者临时将文件标记为纯文本(右键文件 > Mark as Plain Text),处理完成后再恢复。
内容的提问来源于stack exchange,提问作者Galdor
相关产品推荐
相关产品推荐

