我想实现一个Writes
发出一个在被序列化的类中找不到的 JSON 对象。
对于案例类:
case class Foo(i:Int, s:String)
我正在寻找生产:
{
"i": <int>,
"s": "<string>",
"other": "Some value."
}
天真的第一次尝试是:
val writes: Writes[Foo] = ((
(__ \ "i").write[Int] and
(__ \ "s").write[String] and
(__ \ "other").write("Some value.")
)(unlift(Foo.unapply))
自然,这不会编译,因为后续and
调用会产生 aCanBuild3
并且Foo
'unapply
会产生 a Tuple2
。我曾考虑在结果中附加一个值,生成一个Tuple3
,但我发现看起来很糟糕,语言维护者不会实现它。
有一些方法可以解决这个问题,但我不想用我想添加到结果 JSON 中的这些装饰器值污染我的模型类。
有什么建议么?
值得注意的是,您可以转向另一个方向,为Reads.pure
JSON 中不存在值但由结果对象指定的情况提供值。