java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to xxx


 

1.jsp文件的方法

$("#assignPermissionBtn").click(function(){

var jsonData = new Array();

var treeObj = $.fn.zTree.getZTreeObj("treeDemo");

var checkedNodes = treeObj.getCheckedNodes(true); // 獲取被選中的節點

$.each(checkedNodes,function(i,n){
jsonData.push({"roleid":"${roleId}","permissionid":n.id});
});


if(checkedNodes.length == 0){
layer.msg("請選擇分配許可,至少分配一個許可!", {time:1000, icon:5, shift:6});
}else{
var loadingIndex = -1 ;
$.ajax({
type : "POST",
contentType : 'application/json;charset=utf-8', //設置請求頭信息
dataType:"json",
data:JSON.stringify(jsonData),
url : "${CWF_PATH}/role/doAssignPermission.do",
beforeSend : function(){
loadingIndex = layer.msg('正在分配許可...', {icon: 16});
return true ;
},
success : function(result){

layer.close(loadingIndex);

if(result.success){
layer.msg("分配成功", {time:1000, icon:6});

}else{
layer.msg("分配失敗", {time:1000, icon:5, shift:6});
}

},
error : function(){
layer.msg("操作失敗!", {time:1000, icon:5, shift:6});
}
});
}
});

 2.1 java類修改前的方法(list.get(0).getRoleid()取值的時候報錯)

@ResponseBody
@RequestMapping("/doAssignPermission")
public Object doAjaxDeleteRole(@RequestBody List<RolePermission> list){
AjaxResult result = new AjaxResult();
try {
roleService.addRolePermission(list.get(0).getRoleid(),list);
result.setSuccess(true);
} catch (Exception e) {
result.setSuccess(false);
result.setMessage("分配許可失敗");
e.printStackTrace();
}
return result;
}

2.2java文件修改后 的方法

@ResponseBody
@RequestMapping("/doAssignPermission")
public Object doAjaxDeleteRole(@RequestBody List<RolePermission> list){
AjaxResult result = new AjaxResult();

try {

String jsonObject=JSON.toJSONString(list.get(0));
RolePermission rolePermission= JSONObject.parseObject(jsonObject,RolePermission.class);
roleService.addRolePermission(rolePermission.getRoleid(),list);
result.setSuccess(true);
} catch (Exception e) {
result.setSuccess(false);
result.setMessage("分配許可失敗");
e.printStackTrace();
}
return result;
}

錯誤原因

程序走到doAjaxDeleteRole方法利用list.get(0).getRoleid()取得list里的第一個對象的值的時候報錯:java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to xxx,因為list里存放的不是RolePermission實體對象,而是LinkedHashMap,因此需要json轉換。

3 解決方式從list中取出來的數據需要進行轉化成json格式字符串,然后再將該json格式字符串轉換成對象。

3.1使用json-lib對其進行轉換

pom.xml文件導入依賴

<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.3</version>
<classifier>jdk15</classifier>
</dependency>


 后台循環list代碼:

//遍歷list
for(RolePermission rolePermission:list){
// 將list中的數據轉成json字符串
JSONObject jsonObject=JSONObject.fromObject(polePermission);
//將json轉成需要的對象
RolePermission rolePermission = (RolePermission)JSONObject.toBean(jsonObject, RolePermission.class);

}

 3.2使用fast-json對其進行轉換

pom.xml文件導入依賴

<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.61</version>
</dependency>

 java后台取值

//遍歷list
for(RolePermission rolePermission:list){
// 將list中的數據轉成json字符串
String jsonObject=JSON.toJSONString(object);
//將json轉成需要的對象
RolePermission rolePermission= JSONObject.parseObject(jsonObject,RolePermission.class);
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM