2013-08-23 7 views
10

Sto cercando di fare un po 'POC servizio Restfull Web utilizzando Gioca 2.1.3Play 2 - non può tornare oggetto JSON in risposta

ho la seguente classe:

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

ora vorrei mi piace creare URI RESTfull che otterrà JJP per studenti con serializzazione JSON e restituirà lo stesso POJO in risposta.

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

Ma sto compilazione Errore -

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

ho appena fornito Writes[A] come variabile implicita.

Cos'altro mi manca?

risposta

27

Penso che il problema sia che il metodo Ok() non è in grado di capire che Student deve essere trasformato in json, poiché gli argomenti su Ok() possono variare.

  1. Si può restituire un Ok(Json.toJson(xs))
  2. Si può puntare in modo esplicito il tipo desiderato: Ok(xs: JsValue)

ed essere sicuri tutti impliciti sono di portata

+0

continuato a ottenere "Definire scrivibili" errori e JSON. toJson si sbarazza degli errori. Grazie! – elmalto