播放2 - 无法在响应中返回Json对象

dan*_*nik 10 scala playframework playframework-2.0

我正在尝试使用Play 2.1.3做一些RESTFull Web服务POC

我有以下课程:

case class Student(id: Long,firstName: String,lastName: String) 
Run Code Online (Sandbox Code Playgroud)

现在我想创建RESTfull URI,它将获得Json序列化的学生POJO并返回相同的POJO作为响应.

implicit val studentReads = Json.reads[Student]
implicit val studentWrites = Json.writes[Student]


def updateStudent = Action(parse.json){
  request=>request.body.validate[Student].map{
    case xs=>Ok(xs)}.recoverTotal{
      e => BadRequest("Detected error:"+ JsError.toFlatJson(e))
    }
  } 
Run Code Online (Sandbox Code Playgroud)

但我得到编译错误 -

Cannot write an instance of entities.Student to HTTP response. Try to define a 
     Writeable[entities.Student]
Run Code Online (Sandbox Code Playgroud)

我刚刚提供Writes[A]了隐式变量.

我还缺少什么?

ser*_*jja 28

我认为问题是Ok()方法无法弄清楚Student需要转换为json,因为Ok()的参数可能会有所不同.

  1. 你可以退货 Ok(Json.toJson(xs))
  2. 您可以明确指出所需的类型: Ok(xs: JsValue)

并确保所有含义都在范围内