我正在使用Json4s
来反序列化json消息。我有一个类似
case class A(id: Int, b: Option[java.sql.Date])
每当我尝试将json消息转换为案例类A时,我都不会将b作为b的值
scala> read[A]("""{"id":1,"b":12345}""")
res2: A = A(1,None)
scala> read[A]("""{"id":1,"b":"12345"}""")
res3: A = A(1,None)
scala> read[A]("""{"id":1,"b":"12/12/2014"}""")
res4: A = A(1,None)
如何解决此问题
答案 0 :(得分:3)
沿着这些方向的东西(你可能想要更具体的格式)。然后在需要访问此自定义序列化程序的类中混合此特征。
import org.json4s.DefaultJsonFormats._
trait JsonFormats {
case object DateSerializer extends CustomSerializer[java.sql.Date](format => (
{
case JString(s) => Date.valueOf(s)
case JNull => null
},
{
case d: Date => JString(d.toString())
}
)
)
implicit val json4sFormats = native.Serialization.formats(NoTypeHints) + DateSerializer
}