使用JSON Schema实现条件内容匹配与部分字符串比较是否可行?
JSON Schema 实现方案
该逻辑可以通过原生JSON Schema实现,要求使用Draft-07及以上版本的JSON Schema标准。
核心实现逻辑
- 不区分大小写的包含匹配:通过
pattern关键字的内联正则修饰符(?i)实现匹配任意位置出现的option 3,正则写为(?i).*option 3.*即可覆盖大小写所有变体,也支持该字符串出现在长文本任意位置的场景。 - 条件分支校验:通过JSON Schema原生的
if/then/else条件结构处理分支逻辑,匹配对应分支的校验规则即可。
完整可运行Schema示例
{ "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "A": { "type": "string" }, "B": { "type": "array" } }, "required": ["A", "B"], "if": { "properties": { "A": { "type": "string", "pattern": "(?i).*option 3.*" } } }, "then": { "properties": { "B": { "type": "array", "minItems": 2 } } }, "else": { "properties": { "B": { "type": "array", "items": [ { "const": "" } ], "minItems": 1, "maxItems": 1 } } } }
分支校验规则说明
- 匹配
option 3分支:要求字段B为数组类型,且最小长度为2 - 不匹配
option 3分支:要求字段B为数组类型,仅允许存在1个元素,且元素值固定为空字符串,等价于严格等于[""]
内容的提问来源于stack exchange,提问作者Nevyn
相关产品推荐
相关产品推荐

