【发布时间】:2018-02-27 02:00:58
【问题描述】:
架构
我有两张桌子,比如teams 和players。其中,players 表中的每一行都有一个引用 teams 表的 team_id 外键。
我想要的结果是一个 JSON 数组,其中每个元素都是一个团队。该团队有一个players_info 键,它汇总了有关球员的一些信息,然后拥有所有球员的数组。基本上,我希望它看起来像以下
[
{
"id": "Arsenal FC",
"city": "London",
"stadium_capacity": 60000,
....
"players_info": {
"count": 34,
"average_price": 34,
"players": [
{
"name": "Ozil",
"price": 50,
....
},
{
"name": "Wilshere",
"price": 40,
....
},
.....
]
},
{
"id": "Chelsea FC",
"city": "London",
"stadium_capacity": 40000,
....
"players_info": {
"count": 39,
"average_price": 54,
"players": [
{
"name": "Hazard",
"price": 60,
....
},
{
"name": "Kante",
"price": 45,
....
},
.....
]
},
.....
]
问题
这是我目前所拥有的
case class Team(
id: Int,
name: String,
....
players_info: JsValue
)
object Team {
val parse = {
------- What do I do here? -------
get[Int]("id") ~
get[String]("name") ~
.....
get[String]("player_name") ~
get[String]("player_price") map {
case id ~ name ~ player_name ~ player_price ~ ... => Team(id, name, ???)
}
}
}
val teams = DB.withConnection {
implicit connection =>
SQL("SELECT * FROM teams JOIN players ON players.team_id = teams.id").as(Team.parse *)
}
val response = Json.toJson(teams)
我需要以下方面的帮助
- 如何在解析器中构造
player_infoJsValue,以便可以使用我的应用程序代码计算average_price之类的内容,然后在一切准备就绪后初始化我的Team类? - 我不确定我处理此问题的整体架构是否正确。我也可以对此提出一些想法吗?
- 在解析和构造 JSON 的概念之后,我觉得我缺少一些整体上下文。我知道在哪里做这些事情很容易,但我不知道如何在 Scala 中做同样的事情。您能否指出一些相关的资源/教程,我可以在其中进行自我教育?
【问题讨论】:
标签: scala parsing playframework