这是一个初学者问题:
我已定义Event
,如下所示:
case class Event(id: Pk[Long], name: String, userId: Pk[Long])
object Event {
private val EventParser: RowParser[Event] = {
get[Pk[Long]]("id") ~
get[String]("name") ~
get[Pk[Long]]("userId") map {
case id ~ name ~ userId => Event(id, name, userId)
}
}
def findAll(): Seq[Event] = {
DB.withConnection { implicit connection =>
SQL("select * from events").as(EventParser *)
}
}
}
我将它渲染到这样的视图中:
def events = Action {
val events: Seq[Event] = Event.findAll()
Ok(views.html.events(events))
}
但我想返回Json数据。
由于事件类型为Json.toJson(events)
,因此无法使用 Seq
。
我没有找到关于这个主题的好教程,我试着按照这个答案:play framework working with json objects in Scala但它似乎不适用于游戏2.2。
所以我的问题是:您是否知道在访问数据库后将Json中的序列呈现给视图的简单方法?
答案 0 :(得分:3)
试试这个:
import play.api.libs.json._
object Event {
...
implicit def pkWrites[T : Writes]: Writes[Pk[T]] = Writes {
case anorm.Id(t) => implicitly[Writes[T]].writes(t)
case anorm.NotAssigned => JsNull
}
implicit val eventWrites = Json.writes[Event]
}