具有多个patternProperties的Json模式优先级



我正在编写一个包含多个patternProperties元素的模式。有没有办法指定检查这些模式的优先级?

给定此模式:

{
$id: "https://example.com/mySchema",
type: "object",
patternProperties: {
"^foo\.bar\.[a-zA-Z0-9-]+\.(?:string|boolean|date|)$": { // #1
type: "object",
properties: { ... }
},
"^bar\.foo\.[a-zA-Z0-9-]+\.(?:string|boolean|date|)$": { // #2
type: "object",
properties: { ... }
},
"^foo\.[a-zA-Z0-9-]+\.[a-zA-Z0-9-]+\.(?:string|boolean|date|)$": { // #3
type: "object",
properties: { ... }
},
}
}

正在验证的json:

{
foo.bar.baz.boolean: { ... }
}

验证失败,因为它检查的是模式#3而不是模式#1。是否可以先使用最严格的模式进行验证?

关于更多上下文:我目前正在使用AJV来实现验证。如果有更好的选择,我愿意接受的建议

规范没有指明应用模式的顺序,因此实现可以做任何事情,从按字母顺序运行模式到按其选择的任何其他顺序运行模式。

但是,所有匹配每个属性的模式都必须评估它们的子模式,因此检查它们的顺序应该不重要。如果您发现一旦找到匹配的模式,实现就停止匹配特定的属性,那么这将是一个应该修复的错误。

最新更新