2

我正在尝试制作一个通用 Writer 来让我使用 Play Json 获取 json 的字符串表示形式。到目前为止我所拥有的是

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]。在我的一个控制器中,我有

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] 编译时。这是取自这个例子,我无法让它工作。有任何想法吗?

4

1 回答 1

0

在您链接的示例中,您忘记添加import JsonFormatters._以将其Format[T]纳入范围。

于 2015-05-22T15:32:21.167 回答