如何在下面描述的代码中找到此错误的解决方案?

问题描述 投票:0回答:1

错误:java.lang.IllegalStateException:预期为 BEGIN_OBJECT,但在第 1 行第 2 列路径处为 BEGIN_ARRAY $ **

活动: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>

我尝试解决此错误,所以任何人都可以解决此错误,请告诉我。

android kotlin gson retrofit
1个回答
0
投票

我们不知道

DataModalItem
是什么,因为您选择不将其包含在问题中。我们所知道的是,它是单个对象,因此您期望 JSON 是一个 JSON 对象。

但是,

jokes/random/25
端点返回一个包含 25 个非常糟糕的笑话的 JSON array,而不是 JSON 对象。您需要将
Call
设为
Call<List<...>>
,其中
...
是您用于对单个笑话进行建模的任何数据类型。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.