JSON Schema中if条件无法同时匹配多个属性的问题咨询
解决JSON Schema中
if条件同时校验多个属性的问题 你的问题出在if条件的schema没有强制要求country和street_address必须同时存在并满足约束。JSON Schema的properties字段仅定义属性的规则,但默认不会强制这些属性必须出现,也不会限制实例包含其他属性。这就导致只要实例满足其中一个属性的const规则,就会触发then逻辑,而非同时校验两个属性。
修复方案
在if的schema中添加required数组,明确指定必须同时存在country和street_address两个属性,确保只有当两者都存在且值匹配const时,才会触发then的约束。
修改后的完整JSON Schema:
{ "type": "object", "properties": { "street_address": {"type": "string"}, "country": { "default": "United States of America", "enum": ["United States of America", "Canada"] } }, "if": { "properties": { "country": {"const": "United States of America"}, "street_address": {"const": "my_address"} }, "required": ["country", "street_address"] }, "then": { "properties": { "postal_code": {"pattern": "[0-9]{5}(-[0-9]{4})?"} } } }
额外说明
如果需要严格限制实例在满足if条件时,不能包含country和street_address之外的其他属性,可以在if的schema中追加"additionalProperties": false:
"if": { "properties": { "country": {"const": "United States of America"}, "street_address": {"const": "my_address"} }, "required": ["country", "street_address"], "additionalProperties": false }
内容的提问来源于stack exchange,提问作者Raghvendra Rao
相关产品推荐
相关产品推荐

