0
나는 여러 개의 DateTime
필드 클래스가 있습니다. json4s
을 사용하여 직렬화하는 동안이 필드 각각을 2 개의 분리 된 필드로 직렬화하려고합니다. 하나는 형식이 지정된 datetime 문자열이고 다른 하나는 유닉스 타임 스탬프입니다.json4s 함께 직렬화 중에 필드를 추가하는 방법
그래서 예를 들면 경우 클래스는 다음과 같습니다
val event = Event("foo", DateTime.now)
내가 직렬화 된 JSON 문자열이 원하는 : 객체에 대한
case class Event {
name: String,
start: DateTime
}
{
"name": "foo",
"start": "2014-04-01T09:00:00+0000",
"startUnixtime": 1396342800
}
나는 시도했다 FieldSerializer
및 CustomSerializer
하지만 제대로 작동하지 않습니다.
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을 같이 작동합니다
감사합니다.이 트릭을 수행합니다. 그러나 만약 내가 속성의 긴 목록을 가지고 오직 추한 코드를 생성 할 수있는 몇 가지를 변경하고 싶다면 ... – x1a0
추한 코드를 피하려면 다음과 같이 작성할 수 있습니다 : case event : Event => 추출. decompose (event) (DefaultFormats) merge render (("startUnixtime"-> unixtimeFormat (start)) 및 가져 오기 org.json4s.jackson.JsonMethods._ – ezsi