cer*_*ran 3 json scala playframework
我有一个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]
}
Run Code Online (Sandbox Code Playgroud)
具体实施:
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]
}
Run Code Online (Sandbox Code Playgroud)
当使用StringProc实例作为类型时Processor[String],process不出所料的返回类型Result[String]不是StrResult.不幸的是,Writes[StrResult]在这种情况下似乎没用:
找不到类型为Result [String]的Json序列化程序
我怎么能处理这种情况?
你可以试试
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))
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1291 次 |
| 最近记录: |