ObjectMapper가 LocalDate를 String으로 변환 못하는 문제 해결!

박진형·2021년 12월 20일
0

오류

다음과 같이 LocalDate타입을 포함한 request Dto를 String형식의 Json포맷으로 바꾸기 위해
writeValueAsString()를 사용한 상황이다.

ObjectMapper mapper = new ObjectMapper();
MemberJoinRequest request = new MemberJoinRequest("pjh612","123","jhjh","박진형",
                LocalDate.of(1996,6,12), address, "pjh_jn@naver.com","01012341234", MemberType.NORMAL);
        mvc.perform(MockMvcRequestBuilders.post("/member")
                .content(mapper.writeValueAsString(request))

하지만 다음과 같은 오류 발생

com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Java 8 date/time type `java.time.LocalDate` not supported by default: add Module "com.fasterxml.jackson.datatype:jackson-datatype-jsr310" to enable handling (through reference chain: com.deu.football_love.dto.member.MemberJoinRequest["birth"])

대략 birth 부분에서 Java 8의 date/time type을 변환할 수 없으니 모듈을 추가하거나 하라는 뜻인듯 하다.

해결방법

registerModule(new JavaTimeModule());을 추가해주면 간단히 해결됐다.

ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JavaTimeModule());//추가
MemberJoinRequest request = new MemberJoinRequest("pjh612","123","jhjh","박진형",
                LocalDate.of(1996,6,12), address, "pjh_jn@naver.com","01012341234", MemberType.NORMAL);
        mvc.perform(MockMvcRequestBuilders.post("/member")
                .content(mapper.writeValueAsString(request))

0개의 댓글