检查 JSON 验证中两个不同数组项中不同键的真实值

Check for true values for different keys in two different array items in JSON Validation

考虑一下我是否有一个类似于以下示例的数组:

          {
            "id": 1,
            "published": true,
            "available": false
          },
          {
            "id": 2,
            "published": false,
            "available": true
          } 

数组中可以有很多项,比如最多 10 个。我需要分别检查 publishedavailable 的所有项。 JSON 验证应检查所有项目并 PASS 如果数组项目中的任何一项具有 true 至少一次 published 的值 AND trueavailable 也至少一次。它可以在同一个项目或不同的项目中。如果这些属性中的任何一个在任何数组项中都不是 true 甚至一次,则验证应该失败。关于如何完成这项工作的任何想法? 我试过了

anyOF: 检查其中一个属性并通过验证,

allOf:检查每个实例并且对每个实例验证失败它是假的(即使它的密钥是true一次也需要通过),

contains:只能在验证中使用一次,并最终检查单个项目中的两个键是否为真。 关于如何解决这个问题的任何建议都会非常有帮助! 谢谢。

您当然可以多次使用 "contains" -- 只需将其放在 "allOf" 或 "anyOf" 中即可。那么,是这样的吗?

{
  "type": "array",
  "items": {
    "type": "object"
  },
  "allOf": [
    {
      "contains": {
        "properties": {
          "published": { "const": true }
        }
    },
    {
      "contains": {
        "properties": {
          "available": { "const": true }
        }
      }
    }
  ]
}