Требования к массиву объектов - PullRequest
0 голосов
/ 27 ноября 2018

Я написал схему:

{
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "alarms": {
        "type": "integer"
      },
      "events": {
        "type": "integer"
      },
      "statistics": {
        "type": "integer"
      }
    }
  },
  "oneOf": [
    {
    "required":["alarms"],
     "required":["events"],
     "required":["statistics"]
    } 
  ]
}

, и схема, к сожалению, позволяет:

[{alarms: 1, events: 1}, {events:1}, {statistics:3}]

, и моя цель - только правильно проверить:

[{alarms: 1, {events:3}, {statistics:7}] 

Я пытался, но безуспешно.

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Из ваших примеров видно, что вы пытаетесь избежать наличия объектов с несколькими свойствами.Если это так, вот как я бы это сделал:

{
    "type": "array",
    "items": {
        "type": "object",
        "patternProperties": {
            "^(alarms|events|statistics)$": {
                "type": "integer"
            }
        },
        "additionalProperties": false,
        "minProperties": 1,
        "maxProperties": 1
    }
}
0 голосов
/ 27 ноября 2018

Согласно документации Схемы JSON и Вашего примера, вам нужно проверить объект "Предметы".Также у вас была ошибка в проверке "oneOf".Вы должны добавить 3 объекта в массив "oneOf", и у вас был только один объект с 3 одинаковыми параметрами.

    {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "alarms": {
            "type": "integer"
          },
          "events": {
            "type": "integer"
          },
          "statistics": {
            "type": "integer"
          }
        },
        "oneOf": [
         {
           "required":["alarms"]
         },
         {
           "required":["events"]
         },
         {
           "required":["statistics"]
         }
        ]
      },
    }
...