以下是我的代码。非常感谢。
我根本无法读取列表并创建地图。
我正在通过List<Map<String, Object>>
作为
函数参数直到Rest层。在Rest Proxy中调用它的a
普通清单。在我的服务层中,我需要使用存储在List中的Map值。
我的列表具有上述值
[{ID=56, VALUE=CPR,DESCRIPTOR=HEAD},
{ID=68,VALUE=RegFinance,DESCRIPTOR=FINANCE}]
我想要以下格式创建Map<String,Map> using List<Map<String, Object>>
{56={ID=56, VALUE=CPR,DESCRIPTOR=HEAD},
68={ID=68,VALUE=RegFinance,DESCRIPTOR=FINANCE}}
下面的代码在休息调用之前工作,即在Controller层中,但在休息调用后在Service层中不起作用。
Map<String, Object> userRoleMap = new HashMap<>();
for (int count = 0; count < allRolesDetails.size(); count++) {
//Map<String, Object> mapp=allRolesDetails.get(count);
//Above line Gives Exception
String[] singleColumn = allRolesDetails.get(count).toString().split(",");
//Above line Gives Exception
for(String pair : singleColumn)
{
String[] entry = pair.split("=");
userRoleMap.put(entry[1].trim(),allRolesDetails.get(count));
break;//add them to the hashmap and trim whitespaces
}
}
尝试了StackoverFlow上的所有其他选项
Iterator<Map<String, Object>> it = allRolesDetails.iterator();
while (it.hasNext()) {
Map<String, Object> map = it.next(); //so here you don't need a potentially unsafe cast
for (Map.Entry<String, Object> entry : map.entrySet()) {
System.out.println(entry.getKey() + " = " + entry.getValue());
}
}
和
for(Map<String, Object> map:allRolesDetails){
for(Map.Entry<String, Object>entry : map.entrySet()){
String Key=entry.getKey();
Object Value=entry.getValue();
}
}
在所有情况下,每当我使用allRolesDetails.get(count)
或尝试使用Iterator或Map.Entry时,我都会收到以下异常。
java.lang.ClassCastException:java.lang.String无法强制转换为java.util.Map
答案 0 :(得分:1)
你在这里输入了很多代码,当你可以这样做时
Map<String, Map<String, Object>> userRoleMap = new HashMap<>();
for (Map<String, Object> m : allRolesDetails) {
userRoleMap.put(m.get("ID"), m);
}
答案 1 :(得分:0)
我找到了解决方案。 正如我提到的那样
下面的代码在休息调用之前工作,即在Controller层中 在休息呼叫后在服务层中不起作用。
我在RestProxy Call中传递的参数类型存在问题
我正在传递@QueryParam(value = "allRolesDetails") List allRolesDetails
而不是final List<Map<String, Object>> allRolesDetails
。在此更改之后,正在迭代List时检索到正确的Map。
这篇文章帮我找到了问题所在。
sending List/Map as POST parameter jersey