活动:MainActivity.kt
fun getData() {
apiCall().apiService.getData()
.enqueue(object : Callback<DataModalItem> {
override fun onResponse(
call: Call<DataModalItem>,
response: Response<DataModalItem>
) {
Log.e("CHECK_RES", "onResponse: " + response.body()?.punchline)
}
override fun onFailure(call: Call<DataModalItem>, t: Throwable) {
Log.e("CHECK_RES", "Error: " + t.localizedMessage)
Toast.makeText(this@MainActivity, "Error"+t.localizedMessage, Toast.LENGTH_SHORT).show()
}
})
改造类---> apiCall.kt
val BASE_URL =“https://official-joke-api.appspot.com”
private val retrofit by lazy {
Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build()
}
val apiService by lazy {
retrofit.create(apiService::class.java)
}
接口---> apiService.kt
@GET("/jokes/random/25")
fun getData(): Call<DataModalItem>
我尝试解决此错误,所以任何人都可以解决此错误,请告诉我。
我们不知道
DataModalItem
是什么,因为您选择不将其包含在问题中。我们所知道的是,它是单个对象,因此您期望 JSON 是一个 JSON 对象。
但是,
jokes/random/25
端点返回一个包含 25 个非常糟糕的笑话的 JSON array,而不是 JSON 对象。您需要将 Call
设为 Call<List<...>>
,其中 ...
是您用于对单个笑话进行建模的任何数据类型。