JSON模式-数组内的复杂验证

时间:2020-02-11 09:51:53

标签: json jsonschema json-schema-validator

我有一个数组。它可以包含几个testObject。

"testObject": {
  "$id": "#/properties/items/testObject",
  "type": "array",
  "minItems": 1,
  "items": {
    "$id": "#/properties/testObject/items",
    "type": "object",
    "required": [
      "id",
      "testObjectType",
      "title"
    ],
    "properties": {
      "id": {
        "$id": "#/items/id",
        "type": "integer"
      },
      "testObjectType": {
        "$id": "#/items/testObjectType",
        "type": "string"
      },
      "title": {
        "$id": "#/items/title",
        "type": "string"
      }
     }
   }

比方说,我想确保根据testObjectType允许另一个标题。

"allOf": [
 {
   {
  "if": {
    "properties": {
      "testObject": {
        "properties": {
          "testObjectType": {
            "const": "typ1"
          }
        }
      }
    }
  },
  "then": {
    "properties": {
      "testObject": {
        "properties": {
          "title": {
            "const": "testTitle 1"
          }
        }
      }
 }
]

例如如果我那样做,我只能验证一个特定的项目。但是,如果testObject是另一个对象中的数组,则需要对每个项目进行此验证。

使其更加具体。这是输入:

    {
  "root-element": [
    {
      "id": 1,
      "testObjectType": "testObject 1",
      "title": "title 1"
    },
    {
      "id": 2,
      "testObjectType": "testObject 2",
      "title": "title 2"
    },
    {
      "id": 3,
      "testObjectType": "testObject 3",
      "title": "title 3",
      "anotherAttribute": "anotherValue"
    }
  ]
}

如果testObjectType是“ testObject 3”,我想确保anotherAttribute也存在。

“ testObject 2”的第二次验证,标题必须为“ title 2”。 我看到了一个问题,所有这些对象都在一个数组中,并且不知道如何验证每个元素

0 个答案:

没有答案