Moshi:预期 BEGIN_ARRAY 但在路径 BEGIN_OBJECT
Moshi: Expected BEGIN_ARRAY but was BEGIN_OBJECT at path
我从 Moshi
得到以下错误:Expected BEGIN_ARRAY but was BEGIN_OBJECT at path
这是我的界面:
interface ApiService {
@GET("movie/popular")
suspend fun getTopRatedMovies(
@Query("api_key") apiKey: String = BuildConfig.API_KEY,
@Query("page") page: Int = 1
): List<TopRatedMovies>
数据class
data class TopRatedMovies(
@Json(name = "title") val title: String,
@Json(name = "poster_path") val posterPath: String,
)
响应如下所示:
我知道还有其他一些标题相同的问题,但这些问题对我没有帮助。
根据函数的 return 类型 (List<TopRatedMovies>
),Moshi 期望您的 API 到 return 一个列表,但它是 returning 一个对象({"page": ..., "results": [...]}
) 代替。
要处理此问题,您可以创建一个 TopRatedMoviesPage
class,如下所示:
data class TopRatedMoviesPage(
@Json(name = "page") val page: Int,
@Json(name = "results") val results: List<TopRatedMovies>,
)
并将您的 API 定义更改为:
@GET("movie/popular")
suspend fun getTopRatedMovies(
@Query("api_key") apiKey: String = BuildConfig.API_KEY,
@Query("page") page: Int = 1
): TopRatedMoviesPage
我从 Moshi
得到以下错误:Expected BEGIN_ARRAY but was BEGIN_OBJECT at path
这是我的界面:
interface ApiService {
@GET("movie/popular")
suspend fun getTopRatedMovies(
@Query("api_key") apiKey: String = BuildConfig.API_KEY,
@Query("page") page: Int = 1
): List<TopRatedMovies>
数据class
data class TopRatedMovies(
@Json(name = "title") val title: String,
@Json(name = "poster_path") val posterPath: String,
)
响应如下所示:
我知道还有其他一些标题相同的问题,但这些问题对我没有帮助。
根据函数的 return 类型 (List<TopRatedMovies>
),Moshi 期望您的 API 到 return 一个列表,但它是 returning 一个对象({"page": ..., "results": [...]}
) 代替。
要处理此问题,您可以创建一个 TopRatedMoviesPage
class,如下所示:
data class TopRatedMoviesPage(
@Json(name = "page") val page: Int,
@Json(name = "results") val results: List<TopRatedMovies>,
)
并将您的 API 定义更改为:
@GET("movie/popular")
suspend fun getTopRatedMovies(
@Query("api_key") apiKey: String = BuildConfig.API_KEY,
@Query("page") page: Int = 1
): TopRatedMoviesPage