在 Scala PlayFramework 中写入 complex/nested JSON

Writing complex/nested JSON Writes in Scala PlayFramework

假设我有两个案例 类: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 而期待 JsValueWrapper:

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

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

这对我来说确实有效,没有任何编译问题。

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 分享您的完整示例将会很有用。