kotlin - 将属性从一个数据类转换为另一数据类(子类)
问题描述
你好) 。需要一些帮助。我知道如何将数据从 A 类传输到 B 类,但我不知道如何将数据从包含 A 类的子类 A.A1 传输到包含 B 类的子类 B.B1。
我的A班:
data class SpaceXProperty(
val flight_number: Int,
val launch_year: Int,
val links: Links
){
data class Links(val mission_patch: String?)
}
我的B班:
data class Models(val flightNumber: Int,
val mlinks: Mlinks
)
{
data class Mlinks(val mission_patch: String?)
}
我创建了下一个功能
fun List<SpaceXProperty>.asDomainModel(): List<Models>{
return map {
Models(
flightNumber = it.flight_number,
llinks = it.links //here i got error type mismatch "required: Models.Mlinks found: SpaceXProperty.Links"
)
}
}
所以这是为了避免这种情况 - 我将 B 类更改为下一个
data class Models(val flightNumber: Int,
val llinks: SpaceXProperty.Links
)
我是 kotlin 的新手,所以不知道如何正确地将数据从一个子类映射到另一个子类。请帮忙。
我试图将下一个函数放在有趣的 List.asDomainModel() 中,但它不起作用。
fun List<SpaceXProperty.Links>.asDDomainmodel(): List<Models.Llinks>{
return map {
Models.Llinks(
mission_patch = it.mission_patch) }
}
我完全从“https://api.spacexdata.com/v3/launches”获取数据,并希望将此数据粘贴到另一个数据类,如“存储库”。在这里, Moshi 无法解析可为空的,我得到了我需要使用子类的帮助,但在下一步我遇到了问题。
解决方案
几个小错误:
- 在第一个
asDomainModel
函数中,您使用了llinks
属性而不是mlinks
- 试图将对象分配
Links
给Mlinks
以下代码解决了问题
fun List<SpaceXProperty>.asDomainModel() = map {
Models(
flightNumber = it.flight_number,
mlinks = Models.Mlinks(it.links.mission_patch)
)
}
原来的类保持原样
data class SpaceXProperty(
val flight_number: Int,
val launch_year: Int,
val links: Links) {
data class Links(val mission_patch: String?)
}
data class Models(val flightNumber: Int, val mlinks: Mlinks) {
data class Mlinks(val mission_patch: String?)
}
推荐阅读
- jquery - jQuery:获取图像高度+如果需要添加填充
- react-native - 降低抽屉打开速度
- c# - 如何将自定义 ConfigurationSection 添加到程序集?
- typescript - 无法理解 Angular 如何将 json 映射到对象
- google-bigquery - bq load:“加载操作中的 BigQuery 错误:未找到:项目 ...”
- elasticsearch - Elasticsearch 查询排除另一个查询的结果
- python - Python matplotlib 操作以在绘图标题中使用它
- gradle - Gradle - 构建 Java Web 应用程序
- bash - bash脚本中的xset不起作用
- winforms - 需要在 Powershell 中创建、使用和存储动态对象名称