1

いくつかのフィールドを持つケース クラスがありDateTimeます。それをシリアライズするために使用json4sしている間、これらの各フィールドを2つの別々のフィールドとしてシリアライズしたいと思います.1つはフォーマットされた日時文字列で、もう1つは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 に答える