【发布时间】:2015-05-03 02:05:30
【问题描述】:
示例类:
public class A
{
String Name;
List<B> GenericsList;
//Getters & Setters & Constructors
}
public class B
{
String Title;
//Getters & Setters & Constructors
}
public class C extends B
{
String Something;
//Getters & Setters & Constructors
}
如果我像这样序列化 A 类的一个实例:
List<B> bList = new ArrayList<>();
C bObj = new C("name", "something text");
bList.add(bObj);
A aObj = new A("name", bList);
String serialized = new Gson.toJson(aObj);
A deserializedA = new Gson.fromJson(serialized);
我失去了列表中的 C 子类型。 如果它只是一个像这样序列化的列表,我知道如何解决这个问题:
Gson gson = new Gson();
List<B> bList = new ArrayList<>();
Type bType = new TypeToken<List<B>>() {}.getType();
gson.toJson(bList, bType);
gson.fromJson(json, bType);
问题是我的泛型列表位于具有其他参数的对象内。我该怎么做?
编辑 1: 可能我并不清楚具体的问题。
当我序列化和反序列化上面创建的 A 对象时,没有错误,但没有得到这个: 对象 A: 名称=“名称” 泛型列表 = {对象 C}
我得到: 对象 A: 名称=“名称” 泛型列表 = {对象 B}
我失去了亚型 C 的细节。
【问题讨论】:
-
您能否发布一个具有预期输出的完整示例?请详细说明您看到的行为以及您要询问的内容。
-
你应该阅读Polymorphism with Gson。
-
没有帮助。问题是我在要反序列化的对象中有一个泛型类型列表。找不到任何具体的答案......
标签: java list generics gson deserialization