2013-10-21 102 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); 

    } 
}