我有一个案例类
case class Foo(bar: Int, baz: String)
我正在尝试为它编写JSON序列化。但是我还有一个额外的要求,就是在生成的Json中添加一个字段(比如"问候":" Hello")
我正在尝试这些方面:
val writes = ((JsPath \ "bar").write[Int] and
(JsPath \ "baz").write[String] and
(JsPath \ "greeting").write[String])(unlift(Foo.unapply))
但是,我应该如何传递静态" Hello"字符串到上面写的?
如何使用此writes
为我的Format
课程创建Foo
?
答案 0 :(得分:1)
我会这样做:
val writes = Writes[Foo](f => {
Json.obj(
"bar" -> f.bar,
"baz" -> f.baz,
"greeting" -> "Hello")
})
缺点是您必须指定两次成员,但对于需要额外控制的特殊情况,它很方便。
答案 1 :(得分:1)
在一次性场景中,您不想再定义另一个Writes
,您可以这样做:
Json.toJson(foo).as[JsObject] ++ Json.obj("greeting" -> "hello")
答案 2 :(得分:0)
我最终得到了另一种解决方案:
val writes = ((JsPath \ "bar").write[Int] and
(JsPath \ "baz").write[String] and
(JsPath \ "greeting").write[String])((f: Foo) => (f.bar, f.baz, "Hello"))