当前位置: 首页 > 知识库问答 >
问题:

修改错误:-应为BEGIN_ARRAY,但在路径$处为BEGIN_OBJECT

华锦程
2023-03-14

我试图检索行数,但遇到这个错误,下面是我的API链接https://thecodecafe.in/gogrocer-ver2.0/API/top_selling

import com.squareup.moshi.Moshi
import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory
import retrofit2.Call
import retrofit2.Retrofit
import retrofit2.converter.moshi.MoshiConverterFactory
import retrofit2.http.GET

private const val BASE_URL = "https://thecodecafe.in/gogrocer-ver2.0/api/"

val moshi = Moshi.Builder()
    .add(KotlinJsonAdapterFactory())
    .build()

val retrofit = Retrofit.Builder()
    .addConverterFactory(MoshiConverterFactory.create(moshi))
    .baseUrl(BASE_URL)
    .build()

interface GroceryApiServices {
    @GET("top_selling")
    fun getProperties():
            Call<List<GroceryProperty>>
}

object GroceryApi {
    val retrofitServices: GroceryApiServices by lazy { retrofit.create(GroceryApiServices::class.java)}
}

共有1个答案

章光华
2023-03-14

这就是我想要在视图模型类中检索数据的方式

import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import com.kotlin_developer.grocerysell.network.GroceryApi
import com.kotlin_developer.grocerysell.network.GroceryProperty
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response


class OverviewViewModel: ViewModel() {

    private val _response = MutableLiveData<String>()
    val response: LiveData<String>
        get() = _response

    init {
        getGroceryProperties()
    }

    private fun getGroceryProperties(){
        GroceryApi.retrofitServices.getProperties().enqueue(object : Callback<List<GroceryProperty>>{
            override fun onFailure(call: Call<List<GroceryProperty>>, t: Throwable) {
                _response.value = t.message
            }

            override fun onResponse(
                call: Call<List<GroceryProperty>>,
                response: Response<List<GroceryProperty>>
            ) {
                _response.value="Success ${response.body()?.size} Grocery Property arrived"
            }

        })
    }

    override fun onCleared() {
        super.onCleared()
    }
}
 类似资料: