如何在JSON Schema中复用「单个值或非空同类型数组」校验模式?
配置文件属性Schema复用问题
我们编写配置文件时,部分属性采用「支持单个值或同类型非空数组」的设计——这样用户仅需单个项时,无需写冗余的数组声明,既方便又提升可读性。
配置示例
{ // 合法 "accepted_values": 1, // 合法 "accepted_values": [1, 2, 3], // 不合法 "accepted_values": null, // 不合法 "accepted_values": [] }
对应校验Schema
{ "properties":{ "accepted_values": { "oneOf": [ { "type": "number" }, { "type": "array", "items": { "type": "number" }, "minItems": 1 } ] } } }
现在这个oneOf的校验逻辑会在多个属性中重复出现,且每个属性对应的具体值校验规则各不相同。我希望避免重复编写这段oneOf逻辑,想问能不能用类似以下方式结构化Schema来实现模式复用?
{ "properties":{ "accepted_values": { "$ref": "#/one_or_more", "type": "number", // 此处也可以是其他复杂的项定义,比如复杂对象 } }
内容的提问来源于stack exchange,提问作者Nico J.
相关产品推荐
相关产品推荐

