반응형
DTO에 저장되어 있는 값을 Json (String) 형태로 변환하려고 할 때 찾은게 ObjectMapper 이다.
그런데 ObjectMapper 를 그냥 사용하면 보기편한 날짜형태가 아닌, 다음과 같은 형태로 변환된다.
"createdDt":{"year":2020,"month":"FEBRUARY","monthValue":2,"dayOfMonth":18,"dayOfWeek":"TUESDAY","leapYear":true,"dayOfYear":49,"era":"CE","chronology":{"id":"ISO","calendarType":"iso8601"}
테스트 환경을 위해 2개의 오브젝트를 생성했다
import java.time.LocalDate;
public class TestDto {
private String name;
private LocalDate createdDt;
public TestDto(String name, LocalDate createdDt) {
this.name = name;
this.createdDt = createdDt;
}
public String getName() {
return name;
}
public LocalDate getCreatedDt() {
return createdDt;
}
}
메인클래스에서 호출해 변환해보면 다음과 같은 로그가 출력된다
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.time.LocalDate;
public class TestJavaMain {
public static void main(String[] args) throws JsonProcessingException {
TestDto testDto = new TestDto("아이유", LocalDate.now());
ObjectMapper mapper = new ObjectMapper();
String result = mapper.writeValueAsString(testDto);
System.out.println("result = " + result);
}
}
결과
result = {"name":"아이유","createdDt":{"year":2020,"month":"FEBRUARY","monthValue":2,"dayOfMonth":18,"dayOfWeek":"TUESDAY","leapYear":true,"dayOfYear":49,"era":"CE","chronology":{"id":"ISO","calendarType":"iso8601"}}}
mapper에 다음 옵션을 추가하면 원하는 형태로 데이터포멧이 된다.
public class TestJavaMain {
public static void main(String[] args) throws JsonProcessingException {
TestDto testDto = new TestDto("아이유", LocalDate.now());
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JavaTimeModule()); // 추가
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); // 추가
String result = mapper.writeValueAsString(testDto);
System.out.println("result = " + result);
}
}
결과
result = {"name":"아이유","createdDt":"2020-02-18"}
끝.
참조:
https://stackoverflow.com/questions/29571587/deserializing-localdatetime-with-jackson-jsr310-module
반응형
'공부 > 프로그래밍' 카테고리의 다른 글
[mysql] 조회, Index냐 Full Scan이냐 (2) | 2020.02.21 |
---|---|
[junit5] 생성자만 열려있는 오브젝트 테스트하기(mockito) (0) | 2020.02.20 |
[java] NoSuchMethodError MockitoLogger 에러가 날 때 (0) | 2020.02.18 |
[intellij] junit 으로 작성한 테스트가 gradle 로 실행될때 (3) | 2020.02.13 |
[springboot] 데이터 사용 Service를 mockito로 테스트하기 (0) | 2020.02.12 |
댓글