【发布时间】:2019-06-05 04:48:25
【问题描述】:
我有两个 JsonNode 对象,它们是从 API 调用返回的数组,看起来像这样
exportedNodeArray:
[
{"key":"111", "value":"aaa"},
{"key":"222", "value":"bbb"},
{"key":"333", "value":"ccc"}
]
本地节点数组
[
{"key":"999", "value":"aaa"},
{"key":"888", "value":"bbb"},
{"key":"777", "value":"ccc"}
]
所需的输出是对应于每个数组中相同值的任何键的映射。保证数组中的值是唯一的。
"111"="999"
"222"="888"
"333"="777"
此函数返回正确的结果,但似乎是一种非常不优雅的方式。
fun mapIds(exportedNodeArray: JsonNode, localNodeArray: JsonNode) : MutableMap<String, String?> {
val localMap = mutableMapOf<String, String>()
localNodeArray.forEach {
localMap[it["value"].asText()] = it["key"].asText()
}
val idMap = mutableMapOf<String, String?>()
exportedNodeArray.forEach {
idMap[it["key"].asText()] = localMap[it["value"].asText()]
}
return idMap
}
我是 Kotlin 的新手,想了解一种更实用的方法。特别是如果有一种方法可以通过属性值访问 JsonNode 的元素,并在单个循环或映射调用中完成此操作。
【问题讨论】: