2013-08-23 21 views
10

Tôi đang cố gắng để làm một số POC dịch vụ RESTFull Web bằng Play 2.1.3Chơi 2 - Không thể quay trở lại đối tượng JSON trong ứng

Tôi có lớp sau đây:

case class Student(id: Long,firstName: String,lastName: String) 

Bây giờ tôi sẽ muốn tạo ra RESTFull URI, nó sẽ nhận được Json serialized POJO Student và trả về POJO tương tự.

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)) 
    } 
    } 

Nhưng tôi nhận được biên soạn Lỗi -

Cannot write an instance of entities.Student to HTTP response. Try to define a 
    Writeable[entities.Student] 

tôi chỉ cung cấp Writes[A] như là một biến tiềm ẩn.

Tôi còn thiếu gì nữa?

Trả lời

27

Tôi nghĩ rằng vấn đề là phương thức Ok() không thể tìm ra số Student cần được chuyển thành json, vì các đối số cho Ok() có thể thay đổi.

  1. Bạn có thể trả về một Ok(Json.toJson(xs))
  2. Bạn có thể chỉ rõ kiểu dữ liệu mong muốn: Ok(xs: JsValue)

Và hãy chắc chắn tất cả implicits là trong phạm vi

+0

giữ nhận được "Xác định ghi" lỗi và Json. toJson loại bỏ các lỗi. Cảm ơn bạn! – elmalto

Các vấn đề liên quan