具有Retrofit2的Youtube API无法解析响应(错误:PlaylistItemListResponse具有类型PageInfo得到LinkedHashMap)

时间:2017-06-05 12:33:02

标签: android retrofit2 android-youtube-api youtube-data-api

我正在尝试在Android上使用带有Retrfoit2的Youtube API,但两个Jackson / JSON转换器都无法解析对象。

YoutubeService

public interface YoutubeService {
    @GET("playlistItems?part=snippet%2CcontentDetails")
    Observable<PlaylistItemListResponse> getVideos(@Query("maxResults") Integer maxResults,
                                               @Query("pageToken")String pageToken,
                                               @Query("playlistId")String playlistId,
                                               @Query("key")String key);
}

以下是我使用它的方式:

Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(YouTube.DEFAULT_BASE_URL)
            .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
            .addConverterFactory(JacksonConverterFactory.create())
            .build();
    youtubeService = retrofit.create(YoutubeService.class);

以下是我得到的错误:

reactivex.exceptions.OnErrorNotImplementedException: field com.google.api.services.youtube.model.PlaylistItemListResponse.pageInfo has type com.google.api.services.youtube.model.PageInfo, got java.util.LinkedHashMap (through reference chain: com.google.api.services.youtube.model.PlaylistItemListResponse["pageInfo"])

This是PlaylistItemResponse的模型

PlaylistItemResponse的Java files

This是回复

有人可以指导我如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我无法深入了解您的问题,但请尝试更改,如下所示。

1.用Gson制作

addConverterFactory(GsonConverterFactory.create(gson))

2.用下面的方式更改模型类PlaylistItemListResponse

Link of model class

因为它完全是关于你的模型类问题。

快乐编码