【问题标题】:Convert a Map to an Object in Kotlin在 Kotlin 中将地图转换为对象
【发布时间】:2018-05-03 17:18:29
【问题描述】:

大家好,我有一个简单的问题, 我有一个充满元素的地图,我想在我的对象中转换它,让我给你看一些代码:

这是我的对象:

class Bundle(map: Map<String, Any>) {
    var version: String?
    var app: String?
    var countries: ArrayList<Any>?
    var currency: ArrayList<Any>?
    var force: Boolean?
    var name: String?
    var service: ArrayList<Any>?
    var money: Int?

    init {
        version= null
        app= null
        countries= arrayListOf()
        currency= arrayListOf<Any>()
        force= true
        name = ""
        service= arrayListOf<Any>()
        money= 0
    }
}

还有我要转换的地图:

fun getBundle() {

    var db = FirebaseFirestore.getInstance()
    val docRef = db.collection("aa").document("bb")

    docRef.get().addOnCompleteListener { task ->
        if (task.isSuccessful) {
            val document = task.result
            if (document.exists()) {
                Log.d("Doc", "DocumentSnapshot data: " + document.data!!)
              // Here i want to take (document.data!!) and convert it to my Bundle class

            } else {
                Log.d("NO doc", "No such document")
            }
        } else {
            Log.d("ERROR", "get failed with ", task.exception)
        }
    }
}

谢谢!

【问题讨论】:

  • 您要解决的具体问题是什么?
  • 不能再丑了.. 为什么ArrayList&lt;Any&gt;?= arrayListOf()?为什么会有这么多Anys?
  • @hotkey 我要解决的问题是,如何在我的 Bundle 对象中转换我的地图
  • @ice1000 对不起,我是 Kotlin 的新手,我认为这是初始化的好方法
  • 一般来说,你想尽可能地避免Any?,你对一种类型越具体,它就越不可能不是你所期望的去使用它。

标签: java json firebase object kotlin


【解决方案1】:

好的,我找到了解决方案

我在数据类中转换了我的 Bundle 类:

data class Bundle(
    var version: String? = null,
    var app: String? = null,
    var countries: ArrayList<Any> = arrayListOf(),
    var currency: HashMap<String, Any> = hashMapOf(),
    var force: Boolean = false,
    var name: String? = null,
    var service: ArrayList<Any> = arrayListOf(),
    var money: Int = 0
)

然后我只是在我的方法中添加了这个,我想将我的地图转换为我的捆绑对象:

val myObject = document.toObject(Bundle::class.java)

【讨论】:

    猜你喜欢
    • 2021-07-03
    • 2014-11-21
    • 2022-01-22
    • 2017-10-15
    • 2021-12-22
    • 1970-01-01
    • 2016-01-01
    • 1970-01-01
    • 2021-12-17
    相关资源
    最近更新 更多