Play Json を使用して JSON の文字列表現を取得するために、ジェネリック Writer を作成しようとしています。私が今まで持っているのは
import com.twitter.finatra.http.Controller
import play.api.libs.json.{Json, Writes}
trait MyController extends Controller {
def handle(request: AnyRef) =
response
.ok
.json(createJsonResponse(manage(request)))
.toFuture
def manage[T : Writes](request: AnyRef): T
// There should be an implicit Writes[T] in scope
def createJsonResponse[T : Writes](data: T) = Json.stringify(Json.toJson[T](data))
}
私は case class TotalsForResponse(issuer: String, total: Int)定義し、
object JsonFormatters {
implicit val totalsForResponseWrites = Json.format[TotalsForResponse]
}
これにより、コンパイル時にスコープ内の暗黙の Writes[T] が提供されるはずです。私が持っているコントローラーの1つに
def manage[T : Writes](request: AnyRef) = request match {
case TotalInvestorsForRequest(issuer) =>
TotalsForResponse(issuer,
TitleSectionDBHandler.totalInvestorsFor(issuer))
.asInstanceOf[T]
}
これdiverging implicit expansion for type play.api.libs.json.Writes[Nothing]
はコンパイル時に発生します。これは、動作させることができなかったこの例から取られました。何か案は?