2014-12-14 8 views

답변

1

Ok(json)은 실제로는 Status.apply입니다. A을 바이트 배열로 변환하고 A의 콘텐츠 형식을 반환 할 수있는 콘텐츠 인 play.api.http.Writeable[A]이 필요합니다. 귀하의 경우 AJsValue을 나타냅니다.

def listPlaces(implicit writeable: Writeable[Place]) = Action { 
    Ok(Place.list) 
} 

난 당신이 이미 가정합니다 Writes[Place]을 가지고 : 당신이 뭔가를 쓸 수 있도록

은 당신이 할 수있는 것은, 한 단계 더 가서 Writeable[Place]을 공급하는 것입니다. 모든 것은 Writeable를 http로 JSON Writes 변환하는 일반적인 기능을 구현하는 것입니다 남아 :

implicit def jsonWritesToHttpWriteable[A](jsWrites: Writes[A]) 
             (implicit writeable: Writeable[JsValue]): Writeable[A] = 
    writeable.map(jsWrites.writes) 

지금과 같은 암시이 변환 기능을 정의하는 데, 당신은 listPlaces 호출 할 때 그냥 Writes[Place]를 제공 할 수 있습니다 :

val listPlacesJson = listPlaces(placeJsonWrites) 

물론 경로는 listPlacesJson이어야합니다.