JSON Схема - комплексная проверка в массиве - PullRequest
0 голосов
/ 11 февраля 2020

У меня есть массив. Это может содержать несколько объектов 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"
          }
        }
      }
 }
]

Например, если бы я сделал это таким образом, я могу проверить только конкретный c элемент. Но если 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», я хочу убедиться, что есть еще один атрибут.

Вторая проверка для «testObject 2», title должен быть «title 2». Я вижу проблему в том, что все эти объекты находятся в массиве и не знают, как проверить каждый элемент

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...