【发布时间】:2018-06-14 17:20:52
【问题描述】:
在 Slick 中,SQL 连接如下:
select a.id, a.name, b.name, c.name, c.added from A a join B b join C c
将返回像这样的元组:
(1,Jim,Some(Foo),Mark,Some(2018-06-14T08:06:56Z))
(1,Jim,Some(Foo),Anne,Some(2018-06-14T12:04:50Z))
(1,Jim,Some(Bar),Jose,Some(2018-06-14T17:40:19Z))
将此类元组转换为层次结构的最 Scala 方式是什么?例如:
Map(
"id" -> 1,
"name" -> "Jim",
"projects" -> List(
Map(
"name" -> "Foo",
"staffs" -> List(
Map(
"name" -> "Mark",
"added" -> "2018-06-14T08:06:56Z"
),
Map(
"name" -> "Anne",
"added" -> "2018-06-14T12:04:50Z"
)
)
),
Map(
"name" -> "Bar",
"staffs" -> List(
Map(
"name" -> "Jose",
"added" -> "2018-06-14T17:40:19Z"
)
)
)
)
)
请注意,生成的对象将使用 Jackson 转换为 JSON。
【问题讨论】:
-
结构 (1,Jim,Some(Foo),Mark,Some(2018-06-14T08:06:56Z)) 的大小将是恒定的,或者这将是可变的。如果它的大小不变,那就更容易了。
-
您能否发布一个示例输入元组数据结构,您可以在其中从 SQL 获取数据?