Я пытался извлечь данные из 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