如何从嵌套的Hashmap中获取数据?

4

这行代码返回 List<HashMap<String, String>>

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

通过这段代码,我可以成功地获取index[0]中id和name的值。

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<String, String> 如何存储一个 HashMap 作为值? - Rohit Jain
1
你的问题没有意义。HashMap<String, String> 只能包含字符串作为值。所以你可能并没有一个 Map<String, String>,而是一个 Map<String, Object> - JB Nizet
4个回答

2
为了获取参数的值,您可以执行以下操作:
String val = ((HashMap)map.get(0).get("parameters")).get("key");

尽管这样做需要更改HashMap<String,String>HashMap<String,Object>才能使其正常工作。


谢谢AbstractChaos,它起作用了。由于我的声望问题,我无法投票支持你的答案。希望你不介意。再次感谢。 - Erick
@Carnal 我不相信我能 :) 但是ErickSumugat也许可以。很高兴能帮到你。 - AbstractChaos
@Erick Sumugat:当答案对您有用时,您应该接受它。这会激励其他人在未来帮助您。 - 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>>,因此您只能从Map中获取字符串值。如果声明为 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);

    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接