개인공부
jackson버전 ObjectMapper사용
lby132
2022. 9. 4. 20:44
Java 8 date/time type `java.time.LocalDateTime` not supported by default: add Module "com.fasterxml.jackson.datatype:jackson-datatype-jsr310" to enable handling...
객체의 항목 중 LocalDateTime 이 있는 항목의 값을 ObejctMapper 함수를 써서 가져올 경우 위와 같은 에러가 발생하는 경우는 Java 8에서 추가된 LocalDateTime 항목을 제대로 직렬화 또는 역직렬화를 못하는 현상입니다.
저의 경우는 단지 값을 확인하기 위해 new ObjectMapper().writeValueAsString 함수를 써서 이를 보기 위해서는 앞의 ObjectMapper()함수에 JavaTimeModule를 추가해주면 됩니다.
--블로그 참고--
데이터베이스에 저장된 값을 아이디로 꺼내온 결과 값을 json으로 보고싶을때 사용했다.
PostResponse post = postMapper.findById(1L);
try {
final String postJson = new ObjectMapper().registerModule(new JavaTimeModule()).writeValueAsString(post);
System.out.println(postJson);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
// 출력 결과
{"id":1,"title":"1번 게시글 제목","content":"1번 게시글 내용","writer":"테스터","viewCnt":0,"noticeYn":false,"deleteYn":false,"createdDate":[2022,9,4,20,15,12],"modifiedDate":null}
registerModule()을 안쓰려면 부트에 내장된 jackson그대로 쓰지말고 2.9.4로 낮추면 된다고 한다.
아니면 ObjectMapper()를 생성하는 곳마다 registerModule(new JavaTimeModule()) 를 넣어줘야 한다고 함.