Java JSON反序列化继承类

时间:2013-08-25 20:45:16

标签: java json inheritance

我正在使用Gson反序列化从抽象类继承的类。

这是我的代码:

public abstract class Mammal {
    private String name;

    public void setName(String name) {
        this.name = name;
    }

    public String getName(){
        return name;
    }
}

public class Dog extends Mammal {
    public void bark(){

    }
}

public class Cat extends Mammal{

    public void mew(){

    }
}

public class Main {
    public static void main(String[] args) {
        Gson gson = new Gson();
        Mammal dog = new Dog();
        String toGson = gson.toJson(dog);
        Mammal aDog = gson.fromJson(toGson, Mammal.class);
    }
}

运行时会抛出异常,有人可以告诉我如何解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

排队

Mammal aDog = gson.fromJson(toGson, Mammal.class);

你试图反序列化为Mammal对象的实例,因为Mammal是抽象类,这意味着它无法实例化,因此无法完成。

您需要从abstract类描述中删除Mammal关键字,或使用非抽象类,而不是Dog.class

Mammal aDog = gson.fromJson(toGson, Dog.class);