Java/Spring
MappingJacksonHttpMessageConverter를 사용할 때 Date 포맷 정하기.
후루룩짭짭
2010. 10. 14. 18:54
스프링에서 MappingJacksonHttpMessageConverter를 사용할 때
Date 포맷은 json값이
org.codehaus.jackson.map.ObjectMapper를 상속하여 CustomObjectMapper 를 만들고,
CustomObjectMapper클래스 안의 메서드에 @PostConstruct 를 붙여 주고
getSerializationConfig().setDateFormat(new SimpleDateFormat(“yyyy-MM-dd’T'HH:mm:ss.SZ”));
이 스타일로 포맷을 지정해 주면 된다.
그다음엔 스프링 설정에서 빈으로 만들고
Date 포맷은 json값이
"createdAt":1287041156338 이렇게 들어 온다.
이게 멍미!!
하여 포맷을 정해줘야 하는데...
아주 유용한 블로그를 발견 했다.
how-to-serialize-java-util-date-with-jackson-json-processor-spring-3-0
오우 very good!!
하는 방법은
jackson 요녀석이 시리얼 라이즈를 하는데..
Date형식에 대해서는 특정 시리얼라이저(
JsonDateSerializer)
를 정해줘서.
이 녀석을 getDate 하는데다가
@JsonSerialize
(using=JsonDateSerializer.
class
) 이렇게 해주는거다.
JsonSerializer<Date>이것을 상속하여
JsonDateSerializer를 구현해서 사용.
그러면 jackson 이것이 시리얼라이즈를 할 때 저것을 사용하려 시리얼 라이즈를 하게 된다.
쭉 살펴보면..
댓글에도 유용한 답변이 있다.
바로 전역적인 dateformat을 사용할 때는 어떻게 하는가.
이때는
MappingJacksonHttpMessageConverter의 ObjectMapper를 구현하여 set 해주면 된다.org.codehaus.jackson.map.ObjectMapper를 상속하여 CustomObjectMapper 를 만들고,
CustomObjectMapper클래스 안의 메서드에 @PostConstruct 를 붙여 주고
getSerializationConfig().setDateFormat(new SimpleDateFormat(“yyyy-MM-dd’T'HH:mm:ss.SZ”));
이 스타일로 포맷을 지정해 주면 된다.
그다음엔 스프링 설정에서 빈으로 만들고
MappingJacksonHttpMessageConverter에다가 주입!!
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="objectMapper" ref="CustomObjectMapper" />
</bean>