Проверка истинных значений для разных ключей в двух разных элементах массива при проверке JSON

Подумайте, есть ли у меня массив, похожий на пример ниже:

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

Элементов в массиве может быть много, скажем до 10. Мне нужно проверить все элементы отдельно на published и available. Проверка JSON должна проверять все элементы и PASS, если какой-либо из элементов массива имеет trueзначение для published хотя бы один раз И true значение для available также хотя бы один раз. Это может быть один и тот же предмет или разные предметы. Проверка должна завершиться ошибкой, если какое-либо из этих свойств не было true хотя бы раз в любом из элементов массива. Любые идеи о том, как я могу это сделать? я пытался

anyOF: проверяет одно из свойств и проходит проверку,

allOf: проверяет каждый экземпляр и не проходит проверку для каждого экземпляра, если он является ложным (необходимо пройти, даже если ключ равен true один раз),

содержит: может использоваться только один раз при проверке и заканчивается проверкой истинности обоих ключей в одном элементе. Любые предложения о том, как я могу обойти это, были бы очень полезны! Спасибо.


person Avani Agrawal Nath    schedule 28.05.2020    source источник


Ответы (1)


Вы, конечно, можете использовать "содержит" более одного раза - просто поместите его внутри "allOf" или "anyOf". Итак, что-то вроде этого?

{
  "type": "array",
  "items": {
    "type": "object"
  },
  "allOf": [
    {
      "contains": {
        "properties": {
          "published": { "const": true }
        }
    },
    {
      "contains": {
        "properties": {
          "available": { "const": true }
        }
      }
    }
  ]
}
person Ether    schedule 28.05.2020
comment
Благодаря тонну! Я делал наоборот. Я поместил allOf внутрь, так что, очевидно, это не сработало. Это сработало!! - person Avani Agrawal Nath; 28.05.2020