본문 바로가기

TroubleShooting/Java

com.fasterxml.jackson.databind.ObjectMapper 와 org.codehaus.jackson.map.ObjectMapper 차이점 비교

728x90

com.fasterxml.jackson.databind.ObjectMapper 와 org.codehaus.jackson.map.ObjectMapper 차이점 비교


 먼저 두개를 비교하자면 com.fasterxml.jackson.databind.ObjectMapper  가 2.X 이고, org.codehaus.jackson.map.ObjectMapper 가 2.X 이전 버전이다.

(https://groups.google.com/forum/#!topic/jackson-user/CSFwq72lZC8)


 Jackson 라이브러리의 ObjectMapper 를 가지고 JSON 변환 작업을 하는데, 두 가지를 혼용해서 사용하다가 Date 관련 필드를 변환하다가 차이점이 있다는 것을 발견했다.


@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss", timezone="UTC")

private Date regDate; // 등록일시


 Jackson 라이브러리 2.0 에서부터 지원하는 @JsonFormat 를 이용해서 Date(java.util.Date) 의 기본 변환 형태인 timestamp(EPOCH 타임에 해당하는 값의 밀리세컨즈 값) 를 날짜 포맷으로 바꾸고, JSON 문자열로 변환하면 원하는 날짜형으로 출력된다.


import com.fasterxml.jackson.core.JsonProcessingException;

import com.fasterxml.jackson.databind.ObjectMapper;

import com.fasterxml.jackson.dataformat.xml.XmlMapper;


public class AAAAA {

    @Test

    public void toJsonTest() {

        UserObject ojb = new UserObject();

 obj.setUserId("testId1");

 obj.setRegDate(new Date());

 ObjectMapper mapper = new ObjectMapper();

       String str = mapper.writeValueAsString(obj);


       System.out.println("Result = " + str);

}

            


출력

Result:{"userId":"testId1","regDate":"2015-11-18 09:11:40"}


 com.fasterxml.jackson.databind 부분을 org.codehaus.jackson 으로 교체를 하면(즉, 1.X 버전을 사용하면) 결과값이 timestamp 값으로 표시된다.


import org.codehaus.jackson.JsonGenerationException;

import org.codehaus.jackson.map.JsonMappingException;

import org.codehaus.jackson.map.ObjectMapper;


public class AAAAA {

    @Test

    public void toJsonTest() {

        UserObject ojb = new UserObject();

 obj.setUserId("testId1");

 obj.setRegDate(new Date());

 ObjectMapper mapper = new ObjectMapper();

       String str = mapper.writeValueAsString(obj);


       System.out.println("Result = " + str);

}


출력

Result:{"userId":"testId1","regDate":1447838769314}


참고 사이트

http://stackoverflow.com/questions/4428109/jersey-jackson-json-date-format-serialization-how-to-change-the-format-or-us


http://stackoverflow.com/questions/9038005/spring-3-1-json-date-format