使用json4s如何在序列化期间即时添加字段

时间:2014-04-08 08:12:12

标签: json scala serialization json4s

我有一个包含多个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,但无法正常使用。

1 个答案:

答案 0 :(得分:2)

这应该有效:

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) )
    }))

只要你有序列化开始日期格式和unixtime格式的方法。

这会解决您的问题吗?