Я подозреваю, что должен быть какой-то Java класс или библиотека, которую я пропускаю и которая обеспечивает нужную мне функциональность:
Содержимое My Select Input может быть довольно большим, и я хочу отобразить их иерархически для улучшения читаемости (см. пример ниже). Вложенность может достигать любой произвольной глубины.
Weapons
Swords
1-handed
Katanas
Bokin
2-handed
Zweihänder
Spears
Angon
Food
Meat
Fish
Angel
Pasta
...
Я не использую OptGroup
, потому что мне нужно, чтобы коллекции сами выбирались. Сначала я искал в Интернете ссылки на класс дерева Java. Не найдя ничего, я рекурсивно собрал данные для своих опций на стороне сервера в HashMap из HashMaps из HashMaps, полностью вниз и затем вызвав new Gson().toJson(data)
. На стороне клиента я рекурсивно обходит это, вызывая ключи для каждого значения, дополняя текст до глубины соответствия. Это работало некоторое время, пока я не понял, что мои значения Option должны отличаться от текста Option. Теперь я снова в растерянности, потому что коллекция HashMap
не выглядит так, как будто она справится с этим дополнительным измерением.
Раньше я не пытался писать JSON вручную, но я думаю, что JSON, который я хочу отправить сейчас, может выглядеть примерно так:
{
'name' : 'Weapons',
'id' : 45,
{
'name' : 'Swords',
'id' : 32,
{
'name' : '1-handed',
'id' : 341,
{
'name' : 'Katanas',
'id' : 3
},
{
'name' : 'Bokin',
'id' : 9
}
}
}
}
минус Существующее решение там, я думаю, мой следующий план будет сделать класс, который хранит свои собственные данные опций плюс массив экземпляров того же самого класса. На глубоком конце решений, возможно, я мог бы научиться правильно форматировать JSON и использовать StringBuilder и рекурсию для создания объекта JSON. Но разве нет решения этой проблемы, которое использует готовые библиотеки?