Пользовательская десериализация с 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 соответствующими классами):

  1. Создать пользовательский десонализатор GSON
  2. Используйте TypeAdapterFactory

Я на правильном пути, или я далеко? Я не могу найти много информации / учебных пособий по TypeAdapterFactory для моего уровня опыта, и из того, что я прочитал, GSON Deserializer не может / не должен использоваться с Retrofit.

Любая помощь / советы очень ценятся.

0 ответов

Другие вопросы по тегам