如何在改造中解析嵌套对象模型
How to parse nested Object model in retrofit
这是我们从 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?
)
第二个是我们的嵌套模型class(每个端点不同)
data class UserModel(
@SerializedName("token")
var token: String? = "",
...
)
有什么方法可以告诉改造每个端点都使用我的基本模型并且还使用特定的嵌套对象(作为我的基本模型中的 Objects 属性)
尝试使用通用类型对基础 class 进行参数化。然后在定义 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>>
这是我们从 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?
)
第二个是我们的嵌套模型class(每个端点不同)
data class UserModel(
@SerializedName("token")
var token: String? = "",
...
)
有什么方法可以告诉改造每个端点都使用我的基本模型并且还使用特定的嵌套对象(作为我的基本模型中的 Objects 属性)
尝试使用通用类型对基础 class 进行参数化。然后在定义 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>>