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:去掉子类中相同的字段

猜你喜欢

转载自blog.csdn.net/xiadanxin/article/details/54313634
今日推荐