Как разобрать вложенную объектную модель в модификации

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

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

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

Первая - это наша базовая модель (она статична для каждой конечной точки):

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? = "",

    ...

)

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

Всего 1 ответ


Попробуйте параметризовать базовый класс универсальным типом. Затем при определении конечных точек Retrofit обращайтесь к объектам, зависящим от конкретного случая.

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>>

Есть идеи?

10000