Примеры классов:Java GSON - сериализации и Deserialize класса со списком типа генерики
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
}
Если я сериализовать экземпляр класса А, как это:
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: Name = "Имя" GenericsList = {Object C}
я получаю: объекта A: Name = "name" GenericsList = {Object B}
Я теряю подтип C детали.
Можете ли вы опубликовать полный пример с ожидаемым выходом? И, пожалуйста, расскажите подробнее о поведении, которое вы видите, и о том, о чем вы спрашиваете. –
Вы должны прочитать [Полиморфизм с помощью Gson] (http://stackoverflow.com/questions/5800433/polymorphism-with-gson). –
Не помогло. Проблема в том, что у меня есть общий тип List внутри объекта, который я хочу десериализовать. Не могу найти конкретного ответа на этот вопрос .... – Meh