Я пытаюсь создать общий Writer, чтобы получить строковое представление json с Play Json. То, что у меня до сих порНе удается разрешить Writes [T] во время компиляции в Play 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]
во время компиляции. Это было взято с this example, и я не мог заставить его работать. Есть идеи?
Как может возникать ошибка неявного разрешения во время выполнения? – cchantep
Исправлено, что «скомпилировать» спасибо! –
Я не вижу нигде в коде, который вы опубликовали, в котором обобщенный тип 'T' актуализирован (я имею в виду, что конкретный тип задается как общий тип' T'). Весь код кажется мне немного странным, не уверен, чего вы хотите достичь, но я сначала должен убедиться, что 'Json.toJson [TotalsForResponse]' компилируется успешно. –