2017-09-16 193 views
0

下面是我的code.Any幫助表示讚賞。 我根本無法讀取列表並創建地圖。 我將一個List<Map<String, Object>>作爲 函數參數傳遞給Rest層。在Rest代理中調用它的一個 純List。在我的服務層,我需要使用存儲在List中的Map值。從List <Map <String,Object >>創建HashMap <String,Map>給出java.lang.ClassCastException

列表有值提到

[{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}} 

下面的代碼工作REST調用在控制器層即提出過,但在服務無法正常工作休息後通話。

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

試圖在計算器上

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)以下異常或試圖用戶迭代器或地圖的所有其他選項。條目。

java.lang.ClassCastException:java.lang.String中不能轉換爲java.util.Map

+0

歡迎來到Stack Overflow!請[參觀](http://stackoverflow.com/tour)以查看網站的工作原理和問題,並相應地編輯您的問題。另請參見:[如何創建最小,完整和可驗證示例](http://stackoverflow.com/help/mcve) –

+0

您有兩張地圖嗎? –

+0

是的一個是Empty Map userRoleMap 其中我想填充List中的值> – Sagarmatha

回答

1

您在這裏輸入的代碼了很多,當你可能只是這樣做

Map<String, Map<String, Object>> userRoleMap = new HashMap<>(); 
for (Map<String, Object> m : allRolesDetails) { 
    userRoleMap.put(m.get("ID"), m); 
} 
+0

在for(Map m:allRolesDetails){java.lang.ClassCastException :java.lang.String中不能轉換爲java.util.Map \t在com.apple.sfo.workflow.service.InventoryServiceImpl.fetchCenterForDetails(InventoryServiceImpl.java:4649) \t在sun.reflect.NativeMethodAccessorImpl.invoke0(母語方法) \t at sun.reflect.NativeMethodAccessorImpl。invoke(NativeMethodAccessorImpl.java:62) – Sagarmatha

+0

當我找出使用上面幾行代碼而不是我使用的很多代碼的問題後,感謝輸入。 – Sagarmatha

0

我找到了解決方案。 正如我所提到

下面的代碼工作休息調用時即之前控制器層,但 不休息通話後在服務層工作。

有與我經過在RestProxy呼叫 我經過@QueryParam(value = "allRolesDetails") List allRolesDetails代替final List<Map<String, Object>> allRolesDetails。經過這種變化適當地圖參數的類型的問題,而迭代名單是越來越檢索。 這篇文章幫我找到了我的問題。 sending List/Map as POST parameter jersey

相關問題