본문 바로가기
▶ Back-End/Java

LocalDate Jackson Data Format 변경

by 오늘도 코딩 2023. 11. 23.
728x90
반응형

Java8 Jackson ObjectMapper 직렬화 시

LocalDate 타입을 timestamps Format에서 dates Format으로 변경하는 방법

*자세한 설명 생략

 

 

*직렬화(Serialization) : Java Object → JSON String

*역직렬화(Deserialization) : JSON String → Java Object

 

▷ 변경 전

*timestamps Format(Jackson 기본 형식)

{
	"visitDates": {
		"year": 2023,
		"month": "NOVEMBER",
		"monthValue": 11,
		"dayOfMonth": 23,
		"leapYear": false,
		"dayOfWeek": "THURSDAY",
		"dayOfYear": 327,
		"era": "CE",
		"chronology": {
			"id": "ISO",
			"calendarType": "iso8601"
		}
	},
	"visitTimes": {
		"hour": 0,
		"minute": 0,
		"second": 0,
		"nano": 0
	}
}

 

 

▷ 변경 후

*dates Format

{
	"visitDates": "2023-11-23",
	"visitTimes": "00:00:00"
}

 

 

▷ LocalDate Jackson Data Format 변경

*ObjectMapper 모듈 등록

*WRITE_DATES_AS_TIMESTAMPS 설정 끄기

*아래와 같은 상황에서 발생했을 문제

/**
 * 
 * Object to String
 * 
 * @param Object
 * @return String
 */
public static String getObjStr(Object obj) {
    String result = "";
    try {
        result = new ObjectMapper()
                .registerModule(new JavaTimeModule())
                .disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
                .writeValueAsString(obj);
    } catch (Exception e) {
        CmmUtil.errLogStamp("", e);
        return result = "";
    }
    return result;
}

 

*application.peoperties에서도 설정 가능

spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS=false

 

 

▷ 참고

 

[SpringFramework] RESTful방식의 @RestController 와 @ResponseBody란?

몇달전 본인은 프로젝를 진행하면서 클래스를 하나를 Controller로 두고, Controller클래스 내에 view return하는 메소드, RESTful방식으로 return 하는 메소드를 짬뽕해서 사용했다. 결과적으로 이런방식으

wondongho.tistory.com

 

 

728x90
728x90

댓글