Java JSON反序列化继承类

标签 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);
    }
}

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

最佳答案

排队

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

您正在尝试反序列化为 Mammal 对象的实例,这是无法完成的,因为 Mammal 是抽象类,这意味着它无法实例化。

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

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

关于Java JSON反序列化继承类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18433525/

相关文章:

python - 使用 pyspark 解析 json 流

javascript - 如何在开发人员模式浏览器(检查)中将数据发送到服务器而不显示它?

JavaScript 继承

java - 另一个 Java 泛型 "incompatible types"编译错误

c++ - C++ 撤消/重做实现中的抽象类问题

java - java中的 Selenium 异常(org.openqa.selenium.remote.UnreachableBrowserException)

java - java vlcj 1.2.2 RTSP 客户端示例出现问题 (Mac OSX 10.6)

java - 如何使用 imageArray 将每个单词的图像转换为另一个单词

php - 如何使用动态键循环 PHP 对象

java - 如何将模拟注入(inject)到 Spring 安全类中