Вы можете сделать это с помощью Gson, сериализовав карту в json, а затем десериализовав json для любого объекта.Здесь показано преобразование в обоих направлениях:
val gson = Gson()
//convert a map to a data class
inline fun <reified T> Map<String, Any>.toDataClass(): T {
return convert()
}
//convert a data class to a map
fun <T> T.serializeToMap(): Map<String, Any> {
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)
}
См. Аналогичный вопрос здесь