0

假设我有两个案例类:ChildParent看起来像:

case class Child()
case class Parent(child: Child)

假设我已经实现了Writes[Child]. 我想实施Writes[Parent].

我可以使用组合器来做到这一点:

implicit val parentWrites: Writes[Parent] = (
   (__ \ "child").write[Child]
)(unlift(Parent.unapply))

但是使用以下方法,编译器抱怨它Child在期待 a 时看到了类型JsValueWrapper

implicit val parentWrites = new Writes[Parent] {
   def writes(parent: Parent) = Json.obj(
      "child" -> parent.child
   )
}

希望有人可以帮助我了解如何在Writes[Parent]不使用组合器的情况下实现 a 。

4

1 回答 1

1

这对我有用,没有任何编译问题。

import play.api.libs.json._

case class Child(t: String)
case class Parent(child: Child)

implicit val parentWrites = new Writes[Parent] {
  def writes(parent: Parent) = Json.obj("child" -> parent.child)
}

如果您仍然遇到问题,如果您可以与 stacktrace 共享您的完整示例,将会很有用。

于 2015-03-21T21:00:47.110 回答