Преобразовать класс данных в карту kotlin - PullRequest
0 голосов
/ 04 апреля 2019

Моя проблема в том, что мне нужно преобразовать класс данных в kotlin в карту, потому что мне нужно работать с этой структурой как требование, потому что этот ответ будет использоваться для классных классов, и есть пост-процесс, где есть итерации и т. д. с этой картой. Мой класс данных следующий (Подкаст):

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)

Я сделал преобразование вручную, но мне нужен более изощренный способ решения этой задачи.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 25 июля 2019

Вы также можете сделать это с 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)
}

См. Аналогичный вопрос здесь

0 голосов
/ 05 апреля 2019

Я сделал это очень просто. Я получил свойства объекта, просто используя метод .properties groovy, который дал мне объект в виде карты.

...