【问题标题】:How to get the data from nested Hashmap?如何从嵌套的 Hashmap 中获取数据?
【发布时间】:2013-10-21 11:18:56
【问题描述】:

这行代码返回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">>

如何从参数中获取数据?谢谢。

【问题讨论】:

  • HashMap&lt;String, String&gt; 如何将HashMap 存储为值?
  • 你的问题没有意义。 HashMap&lt;String, String&gt; 不能包含除字符串以外的任何值作为其值。所以你可能没有Map&lt;String, String&gt;,而是Map&lt;String, Object&gt;

标签: java android hashmap resttemplate


【解决方案1】:

要获取参数的值,您可以这样做

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

虽然你需要改变

HashMap&lt;String, String&gt;HashMap&lt;String, Object&gt; 才能正常工作

【讨论】:

  • 感谢 AbstractChaos,它成功了。由于我的声誉,我无法投票赞成您的答案。希望你不介意。再次感谢。
  • @Carnal 我不相信我可以 :) ErickSumugat 或许可以。很高兴它有帮助。
  • @AbstractChaos:哈哈,我的错。
  • @Erick Sumugat:当它对你有用时,你应该接受它。这会激励其他人在未来为您提供帮助。
【解决方案2】:
((HashMap)map.get(0).get("parameters")).get(map_key)

【讨论】:

    【解决方案3】:

    试试下面的代码:

    for(int i=0;i<map.size();i++){
    
              map.get(i).get("id");
              map.get(i).get("name");
        }
    

    将每个值保存到您需要的变量中。

    【讨论】:

      【解决方案4】:

      您只能从 Map 中获取字符串值,因为它已声明为 List&lt;HashMap&lt;String,String&gt;&gt;。如果它会说 List&lt;HashMap&lt;String, Object&gt; 你可以这样做:

      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);
      
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-11-22
        • 2021-10-20
        • 2020-08-04
        • 1970-01-01
        • 1970-01-01
        • 2021-12-24
        • 1970-01-01
        相关资源
        最近更新 更多