如何在JSON Schema的required规则中嵌套使用anyOf?
更简洁的实现方案
{ "type": "object", "properties": { "x": { "type": "object", "allOf": [ { "anyOf": [ {"required": ["a"]}, {"required": ["b"]} ] }, { "anyOf": [ {"required": ["c"]}, {"required": ["d"]} ] } ], "properties": { "a": {"type": "string"}, "b": {"type": "string"}, "c": {"type": "string"}, "d": {"type": "string"} } } } }
这个写法完全匹配你需要的(a或b) 且 (c或d)的校验规则,和你原实现的校验效果完全一致,所有支持标准JSON Schema的校验库都可兼容。相比原写法优势明显:
- 无需枚举所有字段组合,代码更精简
- 后续如果要扩展可选字段,比如第一组新增可选字段e、第二组新增可选字段f,仅需在对应anyOf数组中追加规则即可,维护成本更低
内容的提问来源于stack exchange,提问作者Anutrix
相关产品推荐
相关产品推荐

