Вы можете попытаться сохранить каждый параметр как один объект, в котором хранятся все параметры, которые будут исключены, если этот параметр выбран.Таким образом, ваш JSON может выглядеть следующим образом:
[
{
"id": 0001,
"title":"foo",
"type":"radio",
"options":[
{
"bar":"",
"excludes": []
},
{
"foo":"489",
"excludes": []
},
{
"foobar":"489+490",
"excludes": [
{
"id": 0002,
"options": [
"everything"
],
},
{
"id": 0003,
"options": [
"apple",
"cherry"
],
},
]
}
]
},
{
"id": 0002,
"title":"something",
"type":"check",
"options":[
{
"everything":"M016",
"excludes": []
},
{
"evenmore":"M139",
"excludes": []
}
]
},
[...]
Каждый раз, когда выбирается опция, вам придется проверять их список исключений и набирать все эти опции для определенных полей.
Чтобы улучшить удобство использования, вы могли быубедитесь, что для поля осталась только одна опция, выберите эту опцию и затем отключите все поле.
РЕДАКТИРОВАТЬ: Кроме того, вы можете сохранить поле isExcludedBy
для каждого из параметров.
Параметр everything
для id 0002
будет выглядеть следующим образом:
"isExcludedBy": [
"id": 0001,
"options": [
"foobar"
]
]
Это было бы отчасти избыточно, но в зависимости от того, что вы хотите, чтобы ваш пользовательский интерфейс показывал, это может сэкономить вам некоторое вычислительное время.