【问题标题】:Json schema precedence with multiple patternProperties具有多个 patternProperties 的 Json 模式优先级
【发布时间】:2022-02-09 02:09:55
【问题描述】:

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

【问题讨论】:

    标签: json schema jsonschema json-schema-validator


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-03-30
      • 2021-05-22
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-18
      相关资源
      最近更新 更多