Json4s:尝试将Json属性转换为java.sql.Date时遇到麻烦

时间:2014-11-23 07:41:41

标签: scala json4s

我正在使用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)

如何解决此问题

1 个答案:

答案 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    
}