2013-10-21 146 views
1

這行代碼返回List<HashMap<String, String>>如何從嵌套Hashmap獲取數據?

List<HashMap<String,String>> map= restTemplate.postForObject(url,mvm,List.class); 

並通過這個代碼,我可以成功地得到ID和名稱的index[0]值。

List<HashMap<String, String>> map; 
map.get(0).get("id"); 
map.get(0).get("name"); 

地圖

HashMap<"id","1"> 
      <"name","john"> 
      <"parameters",HashMap<"key", "val"> <"key2","val2">> 

我怎樣才能從參數數據的結構?謝謝。

+2

怎麼可能'的HashMap '存儲'HashMap'的價值? –

+1

你的問題沒有意義。一個'HashMap '不能包含任何字符串作爲它的值。所以你可能沒有'Map ',而是'Map '。 –

回答

1

爲了讓你可以做

String val = ((HashMap)map.get(0).get("parameters")).get("key"); 

雖然你將需要改變

HashMap<String, String>HashMap<String, Object>這個工作

+0

感謝AbstractChaos,它的工作。由於我的聲譽,我無法投票回答你的答案。希望你不介意。再次感謝。 – Erick

+0

@Carnal我不相信我可以:) ErickSumugat或許能夠通過。很高興幫助。 – AbstractChaos

+0

@AbstractChaos:哈哈,哈哈我的壞。 – Carnal

0
((HashMap)map.get(0).get("parameters")).get(map_key) 
0

試試下面的代碼參數的值:

for(int i=0;i<map.size();i++){ 

      map.get(i).get("id"); 
      map.get(i).get("name"); 
    } 

將每個值保存到您需要的變量中。

0

由於聲明爲List<HashMap<String,String>>,因此只能從地圖中獲取字符串值。如果要說List<HashMap<String, Object>你可以做這樣的事情:

package com.stackoverflow.maps; 

import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 

public class InnerMaps { 

    public InnerMaps(List<HashMap<String,Object>> outerList) { 
     System.out.println("InnerMaps.<init>"); 
     for (HashMap<String, Object> outerMap: outerList) { 
      for (String key: outerMap.keySet()) { 
       Object value = outerMap.get(key); 
       if (value.getClass().getName().equals(HashMap.class.getName())) { 
        HashMap<String,String> hashMap = (HashMap<String,String>)value; 
        System.out.println(key + ", hashMap:" + hashMap); 
       } else { 
        System.out.println(key + " : " + value); 
       } 
      } 
     } 
    } 

    public static void main(String[] args) { 
     List<HashMap<String,Object>> theList = new ArrayList<>(); 
     HashMap<String,String> innerHashmap = new HashMap<>(); 
     innerHashmap.put("innerOne", "innerOneValue"); 
     innerHashmap.put("innerTwo", "innerTwoValue"); 
     HashMap<String, Object> outer = new HashMap<>(); 
     outer.put("one", new String("One Value")); 
     outer.put("two", innerHashmap); 
     theList.add(outer); 
     InnerMaps app = new InnerMaps(theList); 

    } 
}