是否有更好的解决方案来限制属性名称然后跟随?
{
"type": "object",
"not": {
"anyOf": [{
"required": ["a"]
}, {
"required": ["b"]
}]
}
}
我想接受除a
或b
之外的所有属性。有关工作的解决方案,但它非常复杂,我的python验证器中的验证错误消息很奇怪。
答案 0 :(得分:0)
您的解决方案既美观又易读。我可以看到它如何产生奇怪的验证错误(not
总是使那些复杂),但我会说模式本身很好地解释了约束。
你可以使用oneOf
缩短几个字节(例如{"oneOf": [{}, {"required": ["a"]}]}
),但我认为它不可读。
你也可以用patternProperties
做一些可怕的事情(即制作一个匹配除"a"
/ "b"
之外的任何内容的正则表达式,然后使用additionalProperties
),但我认为& #39;可读性较差。
我认为你的解决方案很好。
答案 1 :(得分:0)
如果您对如何使用patternProperties感兴趣,可以这样做:
{
"type": "object",
"patternProperties": {
"[aA]": {
"not": {}
},
"[bB]": {
"not": {}
}
}
我需要一个类似的解决方案来支持拒绝不区分大小写的属性名称。从草案4开始,我使用的实现不支持正则表达式模式“/ i”来忽略大小写。