如何在JSON Schema中定义允许其他字符串的非完整枚举?
解决方案
你可以利用 JSON Schema 的 anyOf 关键字实现需求,既保留指定枚举值的提示与约束能力,又允许任意其他字符串通过验证:
"p": { "type": "string", "anyOf": [ { "enum": ["A", "B", "C"] }, { "not": { "enum": ["A", "B", "C"] } } ] }
逻辑说明
anyOf表示属性值只需满足数组中任意一个子约束即可- 第一个子约束保留原有的枚举规则,匹配
"A"、"B"、"C" - 第二个子约束通过
not排除枚举项,匹配所有其他字符串
这样修改后,{"p": "A"}、{"p": "B"}、{"p": "D"} 这类实例都会通过验证,既不用将属性定义为无限制的 string 类型,也无需添加 OTHER 枚举项。
内容的提问来源于stack exchange,提问作者nik0x1
相关产品推荐
相关产品推荐

