【发布时间】:2021-08-19 09:22:07
【问题描述】:
我正在尝试将 object1 映射到另一个 object2。但 object1 中有一个列表。 这是我的代码。但是当我收到错误消息时说不能投。 这是我从 API 获得的对象
interface Api {
@GET("/api/")
fun getUsers(@Query("results") results: Int): Single<Dto.Users>
sealed class Dto {
data class Users(
@SerializedName("results") var resultDto: List<Result>
) : Dto()
data class Result(
var cell: String,
var email: String,
var gender: String,
var name: Name,
var nat: String,
var phone: String
) : Dto()
data class Name(
var first: String,
var last: String,
var title: String
) : Dto()
}
}
另一个要映射的数据类。
sealed class Entity {
data class Users(
val results: List<Result>
) : Entity()
data class Result(
var cell: String,
var email: String,
var gender: String,
var name: Name,
var nat: String,
var phone: String
) : Entity()
data class Name(
var first: String,
var last: String,
var title: String
) : Entity()
}
这是我用来将 dto 转换为实体的扩展函数。
Api.Dto.Users.map() = Entity.Users(
resultDto.map { result ->
Entity.Result(
result.cell,
result.email,
result.gender,
Entity.Name(result.name.first, result.name.last, result.name.title),
result.nat,
result.phone
)
}
)
以及我如何使用扩展函数将 dto 转换为实体。
val data = dataFromServer.applyIoScheduler().map { userObj -> { userObj.map() } }
【问题讨论】:
-
显示
Entity和Dto类的代码 -
不清楚您要达到的目标。为相同添加一些更多信息。这个干净的架构是你想要实现的吗?
-
@mightyWOZ 更新了类的代码。
-
@KARUNESHPALEKAR 是的,我正在学习干净的架构,问题是,我得到了 DTO 类的响应,但后来我想将 DTO 对象转换为实体对象。
标签: kotlin rx-android