转换 Map映射<字符串,字符串>在科特林?
我有一个数据库,我从中检索数据并将其存储在 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?,那么我该如何转换它或像地图一样使用它,或者任何其他更简单的方式,类似于 Python字典?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
回答将
Map
转换为Map
的问题标题:虽然我认为这不是您想要的,因为您似乎拥有一个
Map>
。Answering your question title of converting a
Map<String, Any>
to aMap<String, String>
:Although I don't think that's what you want, since you seem to have a
Map<String, Map<String, Any>>
.values.mapValues { it.values.toString() }
参考: https://kotlinlang.org/api/最新/jvm/stdlib/kotlin.collections/map-values.html
values.mapValues { it.values.toString() }
Reference: https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/map-values.html
想通了,简单的类型转换。抱歉,语言新手。
这里唯一的问题是一个警告,说这是未经检查的演员,但我还没有弄清楚如何安全地做到这一点,如果你知道,请告诉我。目前它的工作原理是我知道数据类型。
按照 IDE 的建议,这也可以在没有警告的情况下工作:
Figured it out, simple type casting. Apologies, new to the language.
The only issue here is a warning that says it is an Unchecked cast, but I have yet to figure out how to do it safely, please let me know if you do. For now it works as I know the data types.
This also works without warnings, as recommended by the IDE: