2012-05-24 4 views
1

Я пытался использовать индексированную нотацию, используемую для getProperty из PropertyUtils, для извлечения элемента в списке, содержащемся в качестве значения карты. Вот пример (я использую общий синтаксис здесь):Как использовать PropertyUtils для получения элемента из списка внутри карты?

map = {"aList": ["elem1", "elem2", "elem3"]} 

Пусть говорят, я хочу, чтобы получить значение «elem2», я пытаюсь сделать это с помощью:

PropertyUtils.getProperty(map, "aList[1]"); 

но он, похоже, не работает. Я всегда получаю нулевое значение. Есть ли другой способ сделать это. Чтобы быть ясным, я знаю, что могу сделать getProperty("aList").get(0) (после явного кастинга, конечно), но я работаю над решением, которому нужен приведенный выше код для работы.

+0

Я уже понял это. Отправьте ответ позже, так как правила не позволят мне ответить в течение 8 часов после публикации вопроса. –

ответ

2

Итак, я понял. Приведенный ниже код работает, как, как я хотел:

PropertyUtils.getProperty(map, "(aList)[1]"); 

Я думаю, основываясь на this documentation, что я здесь делаю, что я уточняя, что aList является ключевым и не индексированный свойство компонента. Что-то вроде того.

+0

Ссылка не работает. – Dormouse

+1

Я обновил ссылку на официальную документацию. –

+0

Для всех, кто натолкнулся на это, чтобы узнать, как получить значение из Карты карт карт карт и т. Д. (Например, объективированный JSON): PropertyUtils.getProperty (map, "(keyInFirstMap). (KeyInSecondMap). (KeyInThirdMap)"); Возможное предупреждение: производительность BeanUtils от Apache может быть плохим (см. Http://rodrigojramirez.com/2013/10/21/beware-of-copyproperties- or-the-30-milliseconds-tale/) - после того, как вы испытали это из первых рук , Я проверил бы тест перед использованием PropertyUtils, как указано выше, на сильно реализованном кодовом пути. –

Смежные вопросы