我理解 Play 中 Json 组合器的优点之一是您可以使用相同的模型,但通过使用不同的 Writes 组合器来生成不同的 json 格式。今天我找到了一个用例,但似乎无法让它工作。
case class Person(firstName: String, lastName: String, city: String)
object Person {
implicit val writes = (
(__ \ "firstName").write[String] ~
(__ \ "lastName").write[String] ~
(__ \ "city").write[String])(unlift(Person.unapply))
val cityWrites = (
(__ \ "city").write[String])(unlift(Person.unapply))
}
上面的定义给了我编译错误,因为 nameWrites 与案例类定义不匹配。我可能可以创建一个构造函数覆盖 (this(lastName: String)),但它对模型类没有意义。第二个 Json 的目的只是为了看看我们在哪些城市有客户。
我可以影响这里的 unlift 操作吗?我似乎无法找到有关它的文档。