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

问题描述 投票:0回答:1

考虑一下,如果我有一个数组,看起来像下面的例子。

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

数组中可以有很多项,比如说最多可以有10项。我需要分别检查所有的项目是否有 publishedavailable. JSON验证应该检查所有的项目和。PASS 如果数组中的任何一个项目有 true价值 published 至少一次 AND true 价值 available 至少也有一次。它可以是在同一个项目或不同的项目。如果这些属性中的任何一个没有被验证,验证就会失败。true 甚至在任何一个数组项中都有一次。有什么办法可以让我做到这一点?

anyOF:检查其中一项属性并通过验证。

所有: 检查每一个实例,如果是false,则不通过验证(即使是key,也需要通过)。true 一次)。)

包含在验证中只能使用一次,并且最终会在一个项目中检查两个键是否为真。有什么建议可以解决这个问题,真的很有帮助!谢谢。

json validation jsonschema json-schema-validator
1个回答
1
投票

你当然可以多次使用 "包含"--只要把它放在 "allOf "或 "anyOf "里面。 那么,像这样吗?

{
  "type": "array",
  "items": {
    "type": "object"
  },
  "allOf": [
    {
      "contains": {
        "properties": {
          "published": { "const": true }
        }
    },
    {
      "contains": {
        "properties": {
          "available": { "const": true }
        }
      }
    }
  ]
}
© www.soinside.com 2019 - 2024. All rights reserved.