我有一个包含多个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
}
我已尝试FieldSerializer
和CustomSerializer
,但无法正常使用。
答案 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格式的方法。
这会解决您的问题吗?