0

Json4s用来反序列化 json 消息。我有一个案例类

case class A(id: Int, b: Option[java.sql.Date])

每当我尝试将 json 消息转换为案例类 A 时,我得到 none 作为 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)

我该如何解决这个问题

4

1 回答 1

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    
}
于 2014-11-23T09:26:56.687 回答