Возможно, я бегу в неправильном направлении, но у меня есть список элементов, которые я хочу прочитать.Пользовательская сериализация gson для абстрактного класса
У меня есть абстрактный базовый класс, назовем его Person
:
public abstract class Person {
public int id;
public String name;
}
Теперь у меня есть два возможных реализаций:
public class Hunter implements Person {
public int skill;
// and some more stuff
}
public class Zombie implements Person {
public int uglyness;
// and some more stuff
}
Теперь у меня есть этот пример JSON:
[
{"id":1, "type":"zombie", "name":"Ugly Tom", "uglyness":42},
{"id":2, "type":"hunter", "name":"Shoot in leg Joe", "skill":0}
]
Как я могу прочитать этот JSON как List<Person>
?
Я играю какое-то время с TypeAdapterFactory
и пытался использовать класс под названием CustomizedTypeAdapterFactory
, так как моя реальная структура немного сложнее, чем забавный пример выше.
Я закончил тем, что я хочу, чтобы делегировать сериализации с этим вызовом:
return gson.getDelegateAdapter(this, resultType);
Однако я понятия не имею, как я могу создать что во время выполнения TypeToken<T>
, которое требуется для этого вызова. Есть идеи?
Этот вопрос похож на http://stackoverflow.com/questions/16000163/using-gson-and-abstract-classes – bhspencer