简体   繁体   English

Java JSON反序列化继承类

[英]Java JSON deserialize inheritance class

I am using Gson to deserialize a class which is inherited from an abstract class. 我正在使用Gson反序列化从抽象类继承的类。

Here is my code: 这是我的代码:

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

An exception is thrown when I run it, can someone tell me how to fix this? 运行它时会引发异常,有人可以告诉我如何解决此异常吗?

In line 排队

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

you are trying to deserialize to instance of Mammal object, which cant be done because Mammal is abstract class which means it cant be instantiated. 您正在尝试反序列化Mammal对象的实例,但是无法完成,因为Mammal是抽象类,这意味着无法实例化。

You need either remove abstract keyword from Mammal class description or use non abstract class instead like Dog.class 您需要从Mammal类描述中删除abstract关键字,或者使用非抽象类,例如Dog.class

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM