Youtube API with Retrofit2 not able to parse response(Error: PlaylistItemListResponse has type PageInfo got LinkedHashMap)

Youtube API with Retrofit2 not able to parse response(Error: PlaylistItemListResponse has type PageInfo got LinkedHashMap)

我正在尝试在 Android 上将 Youtube API 与 Retrfoit2 一起使用,但是两个 Jackson/JSON 转换器都无法解析对象。

YouTube 服务

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

的模型

Java files 对于 PlaylistItemResponse

This 是回应

谁能指导我如何解决这个问题?

我无法更深入地理解你的问题,但请尝试如下更改。

1.Make 它与 Gson

addConverterFactory(GsonConverterFactory.create(gson))

2.change 您的模型 class PlaylistItemListResponse 如下所示。

Link of model class

因为这完全是关于您的模型 class 问题。

编码愉快