2013-08-23 11 views
10

Próbuję zrobić kilka POC usług Restfull Web przy użyciu Zagraj 2.1.3play 2 - nie może powrócić obiekt JSON w odpowiedzi

Mam następujące klasy:

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

Teraz chciałbym jak stworzyć RESTfull URI, który spowoduje, że Json będzie serializować Student POJO i zwróci to samo POJO w odpowiedzi.

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

Ale ja dostaję błąd kompilacji -

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

Właśnie przewidzianego Writes[A] jako zmienna niejawny.

Czego jeszcze brakuje?

Odpowiedz

27

Myślę, że problem polega na tym, że metoda Ok() nie może stwierdzić, że Student musi zostać przekształcony w json, ponieważ argumenty funkcji Ok() mogą się różnić.

  1. Można zwracać Ok(Json.toJson(xs))
  2. można jednoznacznie wskazać żądany typ: Ok(xs: JsValue)

I pamiętaj wszystkie implicits są w zakresie

+0

stawała się „Definiowanie zapisywalnych” błędy i JSON. toJson pozbywa się błędów. Dziękuję Ci! – elmalto

Powiązane problemy