Json 具有多个 patternProperties 的架构优先级

Json schema precedence with multiple patternProperties

我正在编写一个包含多个 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 来实施验证。如果有更好的选择,我打开建议

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

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