Пользовательская десериализация с Retrofit 2 и Rx Java
В настоящее время я работаю над проектом, который использует API The Movie DB для поиска и возврата списка фильмов / телешоу. У меня есть два модельных класса (Movie и Show), которые расширяют суперкласс Media.
Я неопытен в Retrofit/Rx Java, и я очень новичок, когда дело доходит до JSON.
Текущая конечная точка выглядит следующим образом:
@GET("discover/{type}")
Single<SearchReply<Media>> discover(@Path("type") String type,
@Query("language") String languageParam,
@Query("sort_by") String sortParam,
@Query("page") int pageParam,
@Query("vote_count.gte") String voteCountParam);
SearchReply выглядит так:
public class SearchReply<T> {
@SerializedName("page")
private int page;
@SerializedName("results")
private List<T> results;
@SerializedName("total_results")
private int totalResults;
@SerializedName("total_pages")
private int totalPages;
public int getPage() {
return page;
}
public List<T> getResults() {
return results;
}
public int getTotalResults() {
return totalResults;
}
public int getTotalPages() {
return totalPages;
}
public SearchReply(int page, List<T> results, int totalResults, int totalPages) {
this.page = page;
this.results = results;
this.totalResults = totalResults;
this.totalPages = totalPages;
}
}
Проблема в том, что я не могу создать экземпляр абстрактного класса Media.
Мой вопрос: Как я могу самостоятельно десериализовать результаты List
Оглядываясь вокруг, я нашел два возможных решения (кроме вызова отдельных конечных точек и замены SearchReply
- Создать пользовательский десонализатор GSON
- Используйте TypeAdapterFactory
Я на правильном пути, или я далеко? Я не могу найти много информации / учебных пособий по TypeAdapterFactory для моего уровня опыта, и из того, что я прочитал, GSON Deserializer не может / не должен использоваться с Retrofit.
Любая помощь / советы очень ценятся.