java.lang.IllegalArgumentException: A declares multiple JSON fields named DatingType

由於有兩個不同的實體要共用一個適配器,所以將它們共同的字段抽取到父類中,然後讓這兩個不同的實體去繼承。從服務器拿到數據後使用Gson進行解析,但是一運行就崩潰了。由於本人電腦不知爲何從不報崩潰日誌,導致我對崩潰原因也是無從得知,最後在StackOverflow找到了幾種解決方法,這裏我總結一下:

子類:

public class A extends B implements Serializable{
    private int Headreview;
    private int Status;
    private String DatingType;
}
父類:
public class B implements Serializable{
    private String DatingType;
}
原因:
gson查找對象的私有字段序列化時,父類的私有字段的含義都包括在內,並且當你領域具有相同的名稱它拋出一個錯誤:java.lang.IllegalArgumentException:A(子類類名)declares multiple JSON fields named DatingType(重複的字段)

解決方法1:在父類的相同字段添加關鍵字transient
public class B implements Serializable{
    private transient String DatingType;
}
解決方法2:去掉子類中相同的字段

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