본문 바로가기
공부/프로그래밍

[java] LocalDateTime(또는 LocalDate)을 Json으로 변환할 때 데이터 포멧

by demonic_ 2019. 5. 11.
반응형

간혹 다른 것과 통신을 위해 JAVA의 객체를 JSON으로 변환할 때가 있다. 
int나 String은 문제없이 데이터 그대로 보여주는데 데이터타입의 경우 전혀다른 포멧으로 변환될 때가 있다. 
이번 글은 그런 문제를 해겷하기 위한 것이다.



ObjectMapper 를 이용해 Object를 Json으로 변경하면 다음과 같다.

ObjectMapper를 이용해 Json 으로 변경 후

{
    "date":{  
        "dayOfYear":125,
        "dayOfWeek":"SUNDAY",
        "month":"MAY",
        "dayOfMonth":5,
        "year":2019,
        "monthValue":5,
        "hour":8,
        "minute":55,
        "second":33,
        "nano":0,
        "chronology":{  
            "id":"ISO",
            "calendarType":"iso8601"
        }
    }
}

 

문제해결을 위해 다음 레파지토리를 추가한다.
여기서는 gradle을 이용한 추가방법이다.

dependencies {
    ...
	//jackson-datatype-jsr310
	compile group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-jsr310', version: '2.9.8'
    ...
}

 

SpringBoot 를 이용중이라면 application.yml 파일에 다음의 내용을 추가한다

spring:
  jackson:
    serialization:
      WRITE_DATES_AS_TIMESTAMPS: false

 

만약 SpringBoot 가 아니라면 다음과 같이 Bean 을 설정해주면 된다

@Bean
public ObjectMapper objectMapper() {
    return Jackson2ObjectMapperBuilder
            .json()
            .featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
            .modules(new JavaTimeModule())
            .build();
}

 

이제 다시 변환해보면 다음과 같은 방식으로 변형된다

{  
   "date":"2019-05-05T08:22:03",
}

끝.

반응형

댓글