gpt4 book ai didi

json - 使用泛型类型参数 Play Writes

转载 作者:行者123 更新时间:2023-12-05 00:57:57 25 4
gpt4 key购买 nike

我有一个特征Processor,看起来像这样:

trait Processor[A] {
def process(in: Seq[Byte]): Result[A]
}

trait Result[A]{
val ok: Boolean
val errorMessage: Option[String]
val data: Option[A]
}

具体实现:

class StringProc extends Processor[String] {
def process(in: Seq[Byte]): StrResult
}

case class StrResult(...) extends Result[String]
object StrResult {
implicit val writes = Json.writes[StrResult]
}

当使用 StringProc 实例作为 Processor[String] 类型时,process 的返回类型不出所料是 Result[String] ,而不是 StrResult。不幸的是,Writes[StrResult] 在这种情况下似乎没有用:

No Json serializer found for type Result[String]

我该如何处理这种情况?

最佳答案

你可以试试

object Result {
implicit def resWrites[T](implicit nested: Writes[T]): Writes[Result[T]] = OWrites[Result[T]] { res =>
Json.obj("ok" -> res.ok, "errorMessage" -> res.errorMessage,
"data" -> nested.writes(res.data))
}
}

关于json - 使用泛型类型参数 Play Writes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36679373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com