【发布时间】:2014-04-11 17:57:33
【问题描述】:
我想实现一个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 调用会产生 CanBuild3 和 Foo 的 unapply 会产生 Tuple2。我曾考虑在结果中附加一个值,生成一个Tuple3,但我发现looks pretty bad 和language maintainers will not implement it。
有一些方法可以解决这个问题,但我不想用我想添加到结果 JSON 中的这些装饰器值污染我的模型类。
有什么建议吗?
值得注意的是,您可以走另一个方向,在 JSON 中不存在值但由结果对象指定的情况下,使用 Reads.pure 提供值。
【问题讨论】:
标签: json scala playframework functional-programming combinators