我有一个案例类
case class Test(a: String, b: Option[Double])
object TestSerializer extends CustomSerializer[Test] (format => ({
case jv: JValue =>
val a = (jv \ "a").extract[String]
val b = (jv \ "b").extractOpt
Test(a, b)
},{
case tst: Test =>
tst.b match {
case Some(x) => ("a" -> "test") ~ ("b" -> x)
case None => ("a" -> "test") ~ ("b" -> "NA")
}
}))
当b可用时,我得到的结果是:{a: "test", b: 1.0}
当b = None时,我得到的结果是:{a: "test"}
第二个结果在第一个部分函数中抛出异常,因为它找不到b。 如何确保我的代码不会失败,而是将json的缺失b值视为无?
我使用的是json4s 3.2.10而不是3.2.11,所以我不能使用preserveEmpty字段选项。