Я пытаюсь получить данные из API, а затем преобразовать результат в объект класса, но код не работает, и объект оказывается нулевым - PullRequest
0 голосов
/ 26 апреля 2020

Я пытался извлечь данные из API и затем преобразовать их в объект определенного класса, но каждый раз, когда я делаю это, и затем пытаться распечатать свойства объектов, появляется ошибка, что я пытаюсь вызвать функцию класса для нулевого объекта. Я использую модифицированный API, может кто-нибудь помочь мне с этим кодом !!

это класс asynctask, который извлекает данные из API

private class fetchData() : AsyncTask<Any, Void, String>(){
        override fun doInBackground(vararg params: Any?): String {
            val retrofit = Retrofit.Builder()
                .baseUrl(Constants.BASE_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .build()
            val service = retrofit.create<CovidDataService>(CovidDataService::class.java)
            val listCalled = service.getCovidData()
            listCalled.enqueue(
                object : retrofit2.Callback<CovidData> {


                    override fun onFailure(call: Call<CovidData>, t: Throwable) {
                    }

                    override fun onResponse(call: Call<CovidData>, response: Response<CovidData>) {
                        if (response!!.isSuccessful) {
                            val weatherList: CovidData = response.body()!!
                            Log.i("Data", weatherList.countries[1].data[1].date)
                        } else {
                        }
                    }

                }
            )
            return ""
        }

    }

Это классы моделей, которые Я пытаюсь использовать для сопоставления данных с объектом

data class CovidData (
    val countries:List<Countries>
) : Serializable

data class Countries (
    val name : String,
    val data : List<CountryData>
) : Serializable

data class CountryData(
    val date : String,
    val confirmed : Long,
    val deaths : Long,
    val recovered : Long
) : Serializable

это интерфейс, который используется для вызова службы API

interface CovidDataService {

    @GET("/timeseries.json")
    fun getCovidData(): Call<CovidData>

}

Кроме того, ответ, который мы получаем в функции list.enqueue создает ошибку, и когда я печатаю тело ошибки, выдается следующая строка

I/Error: com.squareup.okhttp.ResponseBody$1@d11e0cc

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...