Gson報declares multiple JSON fields named XXX解決方法

    因爲要把對象轉化爲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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章