如何在JSON Schema中使用‘and’条件实现多判断逻辑?
在JSON Schema中实现多条件触发必填字段的方案
当然可以实现你需要的逻辑,JSON Schema的if/then关键字支持组合多条件来动态应用验证规则,下面是具体实现和原理说明:
具体实现代码
以下是满足你需求的完整JSON Schema示例:
{ "type": "object", "properties": { "field1": { "type": "string" }, "field2": { "type": "string" }, "field3": { "type": "string" } }, "if": { "allOf": [ { "required": ["field1", "field2"] }, { "properties": { "field1": { "const": "A" } } }, { "properties": { "field2": { "const": "B" } } } ] }, "then": { "required": ["field3"] } }
代码说明
if块中通过allOf组合三个条件:确保field1和field2存在,且field1的值严格等于"A",field2的值严格等于"B"。- 当
if中的所有条件都满足时,then块的规则会生效,强制要求JSON实例必须包含field3字段。 - 如果
if的条件不满足(比如field1不是"A",或field2不是"B",或其中某个字段缺失),then块的规则会被完全忽略,field3可填可不填。
consequent(即then部分)的工作原理
then是if关键字的配套规则,仅当if中的schema验证通过时才会生效。then本身是一个完整的JSON Schema,你可以在里面定义任何合法的验证规则:比如字段类型约束、格式校验、嵌套对象规则,甚至嵌套的if/then逻辑都可以。- 如果
if验证失败,then里的所有规则都不会对当前JSON实例产生约束,相当于这部分规则不存在。
内容的提问来源于stack exchange,提问作者Eclat Tech
相关产品推荐
相关产品推荐

