Основываясь на структуре ответа, вам необходимо иметь обертку класса List<Station>
: примените следующие изменения:
data class ResponseData(
@SerializedName("data") val data: NearestStation
)
data class NearestStation(
@SerializedName("nearststations") val nearestStations: List<Station>
)
Где станция - это тот же класс данных, что и у вас сейчас. Теперь измените услугу по модернизации следующим образом:
interface StationService {
@GET("/bus/nearstation/latlon/[lat]/[lon]/[distance].json")
suspend fun getStationData(): Call<ResponseData>
}
Почему? Корневой объект в объекте JSON состоит из двух полей: code
типа String (пропущено из примера) и data
, который является объектом, состоит из одного поля с именем neareststations
, которое представляет собой список станций. вам необходимо следовать той же структуре объектов в вашей модели класса данных.
---Редактировать:
Вам нужно изменить в своем коде следующее:
Если вы внесли изменения, о которых я упоминал, в свою услугу по модернизации, вам необходимо изменить тип
val stationData = MutableLiveData<List<Station>>()
to
val stationData = MutableLiveData<ResponseData>()
и изменить
val serviceData = service.getStationData().body()
в
val serviceData = service.getStationData().execute().body()
```.
Pay attention that ```serviceData`` is from type ```ResponseData``` not ```List``` So replace ```?: emptyList()``` with mocked ```ResponseData```
person
Mahdi Rajabi
schedule
07.03.2020