首页 > 解决方案 > 使用来自linkedhashmap 的值填充数据类

问题描述

我有一个具有以下形状的linkedhashmap <String, Subject>:. 类 Subject 具有以下字段:

class Subject {
var name: Boolean? = null
var lastname: Boolean? = null
var location: Boolean? = null
 ..
 }


 final_result = 
 "admin" -> Subject
 "customer" -> Subject
 etc.

我需要填充具有以下格式的数据类:

data class SubjectSummary(
    val admin: SubjectData,
    val customer: SubjectData
    ...
)
    
data class SubjectData(val details: DetailsData)


data class DetailsData(val name:String, val lastName:String ...)

因为我需要序列化SubjectSummary类,得到如下json格式:

{
 "admin": {
   "details": {
      "name": "",
      "lastname": "",
       ...
     }
  }
 "customer": {
   "details": {
      "name": "",
      "lastname": "",
       ...
     }
  }

}

如何分配 final_result 映射以匹配 SubjectSummary 结构?我用简单的数据类完成了它,但是当数据类中的字段是数据类时,我不确定要填充它。有什么指导吗?为简单起见,我只展示一个包含几个字段的小示例。

标签: kotlin

解决方案


如果您使用此转换的目标只是能够使用给定的 JSON 格式进行序列化,那么您不需要这个SubjectSummary类。从初始地图转换时,创建AMap<String, SubjectData>就足够了,而且可能更方便。

此外,它似乎DetailsData包含与Subject. 如果是这种情况,也不需要额外的课程。

所以最后看起来你只需要创建一个Map<String, SubjectData可以SubjectData定义为data class SubjectData(val details: Subject). 您可以很容易地转换您的初始地图:

val transformed = finalResult.mapValues { (_, subject) -> SubjectData(subject) }

推荐阅读