在 Kotlin 中将 Map<String, Any> 转换为 Map<String, String>?
Convert Map<String, Any> to Map<String, String> in Kotlin?
我有一个数据库,我从中检索数据并将其存储在 Map 集合中。
在日志中打印时看起来像这样:
{-MxY_3dqegF7YmP-NEaE8={Factors={Percentage=52.89, Got Stuff=0, Happy=1}, Result=Ok, Probability=50}}
这看起来不错,在 Python 我会知道如何处理它,因为它就像一本字典,但问题是内部键和值是 Kotlin 中的 Any 类型对象。
我无法使用该类型并遍历键和列表。我只能将数据打印为字符串,但我只知道这些:
val values = snapshot.getValue<Map<String, Any>>()
Log.d("[CLIENT]", "Value is: $values")
var keys = mutableListOf<String>()
var data = mutableListOf<Any>()
if (values != null) {
for ((k, v) in values) {
keys.add(k)
}
}
val check = values?.get(keys[0])
Log.d("[CLIENT]", "Key is: $check")
它会像这样打印 check:
{Factors={Percentage=52.89, Got Stuff=0, Happy=1}, Result=Ok, Probability=50}
check 是 Any? 类型,那么如何转换它或像 Map 一样使用它,或使用其他更简单的方法, 类似于 like maybe Python Dictionaries?
想通了,简单的类型转换。抱歉,语言新手。
val check = values?.get(keys[0]) as Map<String, String>
这里唯一的问题是一个警告说它是一个未经检查的转换,但我还没有弄清楚如何安全地进行转换,如果你知道请告诉我。目前它可以工作,因为我知道数据类型。
根据 IDE:
的建议,这也可以在没有警告的情况下工作
val check = values?.get(keys[0]) as Map<*, *>
回答您将 Map<String, Any>
转换为 Map<String, String>
的问题标题:
val values = hashMapOf<String, Any>("Foo" to 7, "Bar" to true)
val casted = values.map { e -> e.key to e.value.toString() }.toMap()
虽然我不认为那是你想要的,因为你似乎有 Map<String, Map<String, Any>>
。
我有一个数据库,我从中检索数据并将其存储在 Map
在日志中打印时看起来像这样:
{-MxY_3dqegF7YmP-NEaE8={Factors={Percentage=52.89, Got Stuff=0, Happy=1}, Result=Ok, Probability=50}}
这看起来不错,在 Python 我会知道如何处理它,因为它就像一本字典,但问题是内部键和值是 Kotlin 中的 Any 类型对象。
我无法使用该类型并遍历键和列表。我只能将数据打印为字符串,但我只知道这些:
val values = snapshot.getValue<Map<String, Any>>()
Log.d("[CLIENT]", "Value is: $values")
var keys = mutableListOf<String>()
var data = mutableListOf<Any>()
if (values != null) {
for ((k, v) in values) {
keys.add(k)
}
}
val check = values?.get(keys[0])
Log.d("[CLIENT]", "Key is: $check")
它会像这样打印 check:
{Factors={Percentage=52.89, Got Stuff=0, Happy=1}, Result=Ok, Probability=50}
check 是 Any? 类型,那么如何转换它或像 Map 一样使用它,或使用其他更简单的方法, 类似于 like maybe Python Dictionaries?
想通了,简单的类型转换。抱歉,语言新手。
val check = values?.get(keys[0]) as Map<String, String>
这里唯一的问题是一个警告说它是一个未经检查的转换,但我还没有弄清楚如何安全地进行转换,如果你知道请告诉我。目前它可以工作,因为我知道数据类型。
根据 IDE:
的建议,这也可以在没有警告的情况下工作val check = values?.get(keys[0]) as Map<*, *>
回答您将 Map<String, Any>
转换为 Map<String, String>
的问题标题:
val values = hashMapOf<String, Any>("Foo" to 7, "Bar" to true)
val casted = values.map { e -> e.key to e.value.toString() }.toMap()
虽然我不认为那是你想要的,因为你似乎有 Map<String, Map<String, Any>>
。