Gson - 通过指定类而不是参数化来反序列化对象

时间:2014-05-19 12:05:08

标签: java json deserialization gson

我有以下课程:

public class Top {
   private String key;
...
}

public class A extends Top {
   private String aValue;
...
}

public class Complex {
   private String field;
   private List<Top> objects;
}

我想将json String反序列化为“Complex”类,并指定“objects”元素的类型为“A”。

我尝试了两种方法:

Gson gson = new GsonBuilder()
        .setPrettyPrinting()
        .registerTypeAdapter(A.class, new InstanceCreator<A>() {

            @Override
            public A createInstance(Type arg0) {
                return new A();
            }
        })  //method 1
        .registerTypeHierarchyAdapter(A.class, new My_A_Adapter()) //method 2
        .create();

Complex complexObject = gson.fromJson(json, Complex.class); 
A = (A) complexObject.getObjects().get(0);  // This throws ClassCastException

但是complexObject.getObjects()。get(0)的类型是“Top”,所以我不能把它强制转换为“A”。

我不想参数化Complex类(例如,复杂的),因为我想及时添加更多通用对象的集合......

我有什么解决方案?

0 个答案:

没有答案