我有格的對象列表如下:如何做一個嵌套GROUPBY在斯卡拉
AppInfo(client = "client1", project = "project1", version = "version1")
AppInfo(client = "client1", project = "project1", version = "version2")
AppInfo(client = "client2", project = "project3", version = "version1")
AppInfo(client = "client2", project = "project4", version = "version1")
,需要做一個嵌套的結構是這樣的:
Map(
"clients" -> List(
Map(
"name" -> "client1",
"projects" -> List(
Map(
"name" -> "project1",
"versions" -> List(
"version1",
"version2"
)
)
)
),
Map(
"name" -> "client2",
"projects" -> List(
Map(
"name" -> "project3",
"versions" -> List(
"version1"
)
),
Map(
"name" -> "project4",
"versions" -> List(
"version1"
)
)
)
)
)
)
這看起來可怕,但它會序列化到這個非常簡單的JSON:
{
"clients": [
{
"name": "client1",
"projects": [
{
"name": "project1",
"versions": [
"version1",
"version2"
]
}
]
},
{
"name": "client2",
"projects": [
{
"name": "project3",
"versions": [
"version1"
]
},
{
"name": "project4",
"versions": [
"version1"
]
}
]
}
]
}
是否有任何合理的方法來做到這一點?現在我在Maps中的地圖中有groupBys內的地圖。
編輯
有點像Specter庫Clojure的可能有助於在這裏。
謝謝,我會試試看!我喜歡你如何使用模式匹配來避免像'tuple._1'和'tuple._2'這樣的東西。 –