2014-04-08 3 views
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 
} 

나는 시도했다 FieldSerializerCustomSerializer하지만 제대로 작동하지 않습니다.

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을 같이 작동합니다

답변

2

.

문제가 해결 되었습니까?

+0

감사합니다.이 트릭을 수행합니다. 그러나 만약 내가 속성의 긴 목록을 가지고 오직 추한 코드를 생성 할 수있는 몇 가지를 변경하고 싶다면 ... – x1a0

+0

추한 코드를 피하려면 다음과 같이 작성할 수 있습니다 : case event : Event => 추출. decompose (event) (DefaultFormats) merge render (("startUnixtime"-> unixtimeFormat (start)) 및 가져 오기 org.json4s.jackson.JsonMethods._ – ezsi

관련 문제