Вот желаемая схема и 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:
- Тип может быть либо: «admin», «guest», «anonymous», а атрибут «type» - ОБЯЗАТЕЛЬНО.
- Каждый объект в массиве может иметь свою собственную структуру, но тип может быть любымТолько для "admin", "guest", "anonymous". Никакой другой атрибут типа недопустим.
Условия для оценки:
- Тип объекта в массиве не может повторно появляться в массиве. (Я знаю, что это кажется невозможным, поэтому мы можем это проигнорировать)
- Если атрибут "rights" в {type = admin object} с любым значением, то у нас не может быть "rights": "limited"или любое значение в {type = guest object}. Валидация схемы JSON должна пожаловаться на это.
- Может существовать еще один поворот, может существовать либо объект {тип ":" гость "}, либо {тип": "анонимный"}. Оба типа не могут сосуществовать вместе с другими типами.
---- Обновление Приведенная выше ссылка является решением этого вопроса.