1

我有一个包含多个DateTime字段的案例类。在使用json4s序列化它时,我想将这些字段中的每一个序列化为 2 个单独的字段 - 一个在格式化的日期时间字符串中,另一个在 unix 时间戳中。

因此,例如案例类是:

case class Event {
    name: String,
    start: DateTime
}

对于一个对象:

val event = Event("foo", DateTime.now)

我希望序列化的 json 字符串为:

{
    "name": "foo",
    "start": "2014-04-01T09:00:00+0000",
    "startUnixtime": 1396342800
}

我已经尝试过FieldSerializerCustomSerializer但无法让它工作。

4

1 回答 1

3

那应该工作:

import org.json4s.CustomSerializer
import org.json4s.JsonDSL.WithBigDecimal._
import org.json4s.native.Serialization._

object EventSerializer extends CustomSerializer[Event](format =>
  ( PartialFunction.empty,
    {
      case Event(name, start) =>
        ( "name" -> name ) ~
        ( "start" -> stringFormat(start) ) ~
        ( "startUnixtime" -> unixtimeFormat(start) )
    }))

只要您有方法将 start 序列化为日期格式和 unixtime 格式。

这能解决你的问题吗?

于 2014-04-11T06:49:24.760 回答