播放json数据到视图!斯卡拉2.2.3

时间:2014-09-23 00:20:48

标签: json scala playframework-2.0

这是一个初学者问题:

我已定义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中的序列呈现给视图的简单方法?

1 个答案:

答案 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]
}