2012-05-24 46 views
1

我一直在嘗試使用用於PropertyUtils的getProperty的索引表示法來檢索包含爲地圖值的列表中的元素。這裏有一個例子(我使用的是一般的語法在這裏):如何使用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是一個關鍵,而不是bean的一個索引屬性。類似的東西。

+0

鏈接已損壞。 – Dormouse

+1

我更新了官方文檔的鏈接。 –

+0

對於遇到此問題的任何人都在尋找如何從Map of Maps of Maps等地圖(例如,客觀化的JSON)獲取值:PropertyUtils.getProperty(map,「(keyInFirstMap)。(keyInSecondMap)。(keyInThirdMap)」);可能的警告:Apache的BeanUtils性能可能很差(請參閱http://rodrigojramirez.com/2013/10/21/beware-of-copyproperties-或-30-milliseconds-tale/) - 在親身體驗它之後,我會在使用PropertyUtils之前在嚴格執行的代碼路徑上運行測試。 –