【发布时间】:2020-04-06 18:33:34
【问题描述】:
我想将网络 DTO(rest api 响应)转换为 Kotlin 中的数据库 DTO。 Network DTO 包含一个 List as 字段,并且该列表中的项目还包含其他数据的列表。下面是网络响应或网络 DTO 的表示
{
categories: [
{
catId: 0,
name: "Category A",
products: [
{
prodId: 900,
name: "Product 1"
ingredients: [
{
name: "Ingre 1"
}
]
}
]
}
]
}
我想提取和转换所有类别的列表,然后是所有产品的列表,然后是所有成分的列表到三个单独的列表中,并且还想将这些数据转换为它们各自的数据库 DTO。
我创建了一段执行所需任务的代码,但我确信存在性能问题,并且必须有一些更 kotlinish 的解决方案。
val dbCategories = networkCategories?.map {
DBCategory(
catId = it.catId,
name = it.name
)
}
val dbProducts = networkCategories?.map { it.networkProducts }?.map {
it.map { singleNetworkProduct ->
DBProduct(
prodId = singleNetworkProduct.prodId,
name = singleNetworkProduct.name,
)
}
}?.flatten() // flatten to remove the nested array lists created by repeated map functions
在上面的代码中,为了简单起见,我跳过了成分数组的提取。
【问题讨论】:
标签: android performance kotlin datamapper