在 Scala PlayFramework 中写入 complex/nested JSON
Writing complex/nested JSON Writes in Scala PlayFramework
假设我有两个案例 类:Child
、Parent
看起来像:
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 分享您的完整示例将会很有用。
假设我有两个案例 类:Child
、Parent
看起来像:
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 分享您的完整示例将会很有用。