반응형
이번엔 조회 응답 단일 객체를 테스트하는 과정에서 만난 에러이다.
1. 에러 메세지
2. 오류 발생 원인
ObjectMapper를 사용해 객체를 직렬화/역직렬화하는 과정에서 Jackson이 Java 8의 LocalDateTime, LocalDate, LocalTime 타입을 기본적으로 지원하지 않기 때문에 발생한 오류로 확인되었다.
3. 해결 방법
의존성 추가
implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310'
모듈 등록
@Configuration
public class ObjectMapperConfig {
@Bean
public ObjectMapper objectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(new JavaTimeModule());
return objectMapper;
}
}
위와 같이만 설정해도 에러 메세지는 나타나지 않지만 한가지 문제가 발생한다.
Jackson이 LocalDateTime을 직렬화할 때 기본적으로 배열로 변환한다.
- Jackson의 기본 직렬화: [year, month, day, hour, minute] 배열 형태로 변환
포맷 설정
LocalDateTime 필드에 @JsonFormat 어노테이션을 추가하여 원하는 포맷으로 직렬화되도록 설정한다.
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime receiptBeginDateTime;
위와 같이 설정해주면 해당 오류를 해결할 수 있다.
반응형