需要转换:
Map(
"a.b.c" -> "abc",
"a.b.d" -> "abd"
)
在:
Map(
"a" -> Map(
"b" -> Map(
"c"-> "abc",
"d" -> "abd"
)
)
)
到目前为止,我只能实现以下结构:
List(Map("a" -> Map("b" -> Map("c" -> "abc"))), Map("a" -> Map("b" -> Map("d" -> "abd"))))
但是还没有想法如何将其展平。
UPD:
解决我的问题的答案的略微修改版本。
def go(pairs: Map[Array[String], _]): Map[String, _] = {
if (pairs.exists(_._1.length == 1)) pairs.map(t => t._1.head -> t._2)
else {
pairs
.groupBy(_._1.head.toString)
.mapValues { grouped =>
val woGroupedKey = grouped.map { case (key, value) => key.tail -> value }
go(woGroupedKey)
}
}
}
使用递归是这样的: