Условная проверка схемы JSON в объекте JSON в массиве - PullRequest
0 голосов
/ 30 сентября 2019

Вот желаемая схема и json для иллюстрации. См. Ссылку ниже.

Схема JSON и JSON

{
  "id": "123" ,
  "ts": "1234567890",
  "complex_rules":
  [
    {
      "type":"admin",
      "rule":{
       "rights":"all",
       "remarks": "some admin remarks"
       }
    },
    {
      "type":"guest",
      "rights": "limited"
    },
    {
      "type":"anonymous",
      "rights": "blocked"
    }
  ]
}

complex_rules - это массив объекта json:

  1. Тип может быть либо: «admin», «guest», «anonymous», а атрибут «type» - ОБЯЗАТЕЛЬНО.
  2. Каждый объект в массиве может иметь свою собственную структуру, но тип может быть любымТолько для "admin", "guest", "anonymous". Никакой другой атрибут типа недопустим.

Условия для оценки:

  1. Тип объекта в массиве не может повторно появляться в массиве. (Я знаю, что это кажется невозможным, поэтому мы можем это проигнорировать)
  2. Если атрибут "rights" в {type = admin object} с любым значением, то у нас не может быть "rights": "limited"или любое значение в {type = guest object}. Валидация схемы JSON должна пожаловаться на это.
  3. Может существовать еще один поворот, может существовать либо объект {тип ":" гость "}, либо {тип": "анонимный"}. Оба типа не могут сосуществовать вместе с другими типами.

---- Обновление Приведенная выше ссылка является решением этого вопроса.

1 Ответ

0 голосов
/ 01 октября 2019

В отношении 1 и 2:

Вам необходимо использовать комбинацию ключевых слов if, then и not для построения необходимой логики с правильным уровнем применимости.

В отношении 3:

Тип объекта в массиве не может повторно появляться в массиве. (Я знаю, что это кажется невозможным, поэтому мы можем проигнорировать это)

Правильно, это верно, это невозможно с черновой JSON-схемы.

...