【发布时间】:2019-01-10 02:46:54
【问题描述】:
我正在使用外部服务,我希望收到一个包含具有三种值的字段的 json:
- 双重
- 空
- 该字段可能不存在
我需要将 json 反序列化为案例类,并在代码中的其他位置将其序列化为具有相同字段的 json。
我有一个隐式读写:
implicit lazy val aReads: Reads[A] = (
"foo".readNullable[Double]
)(A.apply _)
implicit lazy aWrites: OWrites[A] = (
"foo".write[Option[Double]]
)
和案例类:
case class A(
foo: Option[Double]
)
正如您可以想象的那样,问题是当值不存在时我无法“捕捉”,如果使用 "foo".writeNullable[Double] 作为作家,我无法捕捉到它为空(它将始终不存在)。我该如何解决这个问题?
【问题讨论】:
-
当字段为
null时会发生什么?你序列化什么? -
如果我使用写入
"foo".write[Option[Double]]并对其进行序列化,它将是"foo"->null,如果它不存在,它将是相同的。 -
我想我没有遵循你的思路。是否要序列化
"foo": null? -
我想要一个等于输入的输出:如果我收到
"foo": null,我想将它序列化为空。同时,如果该字段不存在,我不想在输出中包含它。我现在说清楚了吗? -
是的,现在我跟着 :)
标签: json scala serialization playframework