因爲要把對象轉化爲json字符串,然後存到redis 中,所以用到了Gson。但是今天在測試的工程中,突然報出一下異常:
class com.lenovoedu.model.adapter.SysAuthorityTreeAdapter declares multiple JSON fields named childList
於是,根據異常信息認真檢查異常信息中的類,發現如下:
SysAuthorityTreeAdapter的源碼如下:
SysAuthority的源碼如下:
package com.lenovoedu.model.sys.model;
import com.lenovoedu.base.mybatise.Model;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
public class SysAuthority implements Serializable, Model<Long> {
public enum Column{
id, authorityName, parentId, authorityFlag, authorityType, url, isAble
}
/**
* 主鍵
*/
private Long id;
/**
* 權限名稱
*/
private String authorityName;
/**
* 父親ID
*/
private Long parentId;
/**
* 權限標識
*/
private String authorityFlag;
/**
* 權限類型1模塊2目錄3菜單4按鈕5其他
*/
private String authorityType;
/**
* 訪問地址
*/
private String url;
/**
* 權限狀態1正常2刪除
*/
private String isAble;
private ArrayList<SysAuthority> childList;
@Override
public Long getId() {
return id;
}
@Override
public void setId(Long id) {
this.id = id;
}
public Long getParentId() {
return parentId;
}
public void setParentId(Long parentId) {
this.parentId = parentId;
}
public String getAuthorityName() {
return authorityName;
}
public void setAuthorityName(String authorityName) {
this.authorityName = authorityName;
}
public String getAuthorityFlag() {
return authorityFlag;
}
public void setAuthorityFlag(String authorityFlag) {
this.authorityFlag = authorityFlag;
}
public String getAuthorityType() {
return authorityType;
}
public void setAuthorityType(String authorityType) {
this.authorityType = authorityType;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getIsAble() {
return isAble;
}
public void setIsAble(String isAble) {
this.isAble = isAble;
}
public ArrayList<SysAuthority> getChildList() {
return childList;
}
public void setChildList(ArrayList<SysAuthority> childList) {
this.childList = childList;
}
}
也有屬性childList。所以當我用Gson轉SysAuthorityTreeAdapter對象的時候,就會報錯。說明父類和子類中的屬性重複。
解決辦法:
1.修改其中一個類中相同屬性的屬性名即可。
2.我的解決辦法,我發現我往redis存父類和子類是一樣的效果,所以我什麼也沒有改,果斷存了子類SysAuthority