我用的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);
    }
}
这里我想的是Gson把String转化成class时候不知道到底是Dog还是Cat,错误如下:
请问如何解决?javajson继承

解决方案 »

  1.   

    你把 String toGson = gson.toJson(dog);这一句产生的toGson打印出来看效果,然后看看是否字符串中具有Mammal元素,再想想,还不明白的话继续追问我。
      

  2.   

    第一个问题:你什么你的Mammal要用abstract?你在gson.fromJson(toGson, Mammal.class)相当于创建一个Mammal实体类,你觉得你能创建的出来 就好像一个接口 你用A a=new A()一样 这根本就是无解的
    第二gson.fromJson(toGson, Mammal.class)照理说这边应该是Dog.class吧
      

  3.   

    如果在runtime时候不知道dog的类是什么,只知道它是mammal的子类然后要把它cast到相应的类,这样该怎么做?