【问题标题】:Transform data class to map kotlin将数据类转换为映射 kotlin
【发布时间】:2026-02-12 19:45:02
【问题描述】:

我的问题是我需要将 kotlin 中的数据类转换为地图,因为我需要使用此结构作为要求,因为此响应将用于 groovy 类并且有一个后期处理这张地图有验证迭代等。我的数据类是下一个(Podcast):

data class PodCast(val id: String, val type: String, val items: List<Item>, val header: Header, val cellType:String? = "")

data class Item(val type: String, val parentId: String, val parentType: String, val id: String, val action: Action, val isNew: Boolean)

data class Header(val color: String, val label: String)

data class Action(val type: String, val url: String)

我手动进行了转换,但我需要更复杂的方法来完成这项任务。

谢谢。

【问题讨论】:

  • Map 应该是什么样的?您手动进行了转换...在哪里?什么样的方法可以称为“更复杂”?
  • 需要把哪个类转成Map
  • 映射应该是键值映射,更复杂的意思是实现这一点的通用方式。
  • 键值映射”。这就是地图。什么应该是键,什么应该是值?您已经尝试过什么,为什么还不够通用?
  • 我需要在地图中转换它,因为自从 groovy 以来我必须使用这张地图,并且这张地图有一个后期处理、迭代、请求文件等。

标签: kotlin casting maps data-class


【解决方案1】:

你也可以用 Gson 做到这一点,通过将数据类序列化为 json,然后将 json 反序列化为映射。此处显示的双向转换:

val gson = Gson()

//convert a data class to a map
fun <T> T.serializeToMap(): Map<String, Any> {
    return convert()
}

//convert a map to a data class
inline fun <reified T> Map<String, Any>.toDataClass(): T {
    return convert()
}

//convert an object of type I to type O
inline fun <I, reified O> I.convert(): O {
    val json = gson.toJson(this)
    return gson.fromJson(json, object : TypeToken<O>() {}.type)
}

查看类似问题here

【讨论】:

    【解决方案2】:

    我做的很简单。我只使用 .properties groovy 方法获得了对象的属性,该方法将对象作为地图提供给我。

    【讨论】: