Как разобрать вложенную объектную модель в модификации - PullRequest
1 голос
/ 12 февраля 2020

Вот что мы получаем от нашего API

{
    "result": true,
    "message": "Login successful",
    "objects": [
        {
            "token": "XXXXXXXXXXXXXXXXXXXX",
            ...
        }
    ]
}

, и у меня есть 2 модели для этого json.

Сначала наша базовая модель (это stati c для каждой конечной точки):

data class APIResultModel(
    @SerializedName("result")
    var result: Boolean? = false,

    @SerializedName("message")
    var message: String? = "",

    @SerializedName("objects")
    var objects: Any?
)

Второй - наша вложенная модель класса (который отличается для каждой конечной точки )

data class UserModel(

    @SerializedName("token")
    var token: String? = "",

    ...

)

Можно ли как-то сообщить дооснащению, что каждая конечная точка использует мою базовую модель, а также использовать указанный c вложенный объект (как атрибут Objects в моей базовой модели)

1 Ответ

3 голосов
/ 13 февраля 2020

Попробуйте параметризовать базовый класс универсальным типом c. Затем при определении конечных точек Retrofit укажите ваши * case-Speci c объекты.

data class APIResultModel<T>(
    @SerializedName("result")
    var result: Boolean? = false,

    @SerializedName("message")
    var message: String? = "",

    @SerializedName("objects")
    var objects: T
)

Затем в интерфейсе Retrofit

@GET("api/path") 
fun endpoint(): Call<ApiResultModel<UserModel>>
...