public class JsonTest {
@Test
void test() throws JsonProcessingException {
String s = "[{\"date\":\"2023-07-02 23:59:59\"}]";
ObjectMapper objectMapper = new ObjectMapper();
Response[] value = objectMapper.readValue(s, Response[].class);
log.info("==> value[0]={}", value[0]);
}
}
@Getter
@Setter
public class Response {
private LocalDateTime date;
}
테스트 실행시 InvalidDefinitionException
발생한다.
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: 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
를 사용해 입력 또는 가져오면 위와 같은 에러가 발생한다.LocalDateTime
항목을 제대로 직렬화 또는 역직렬화를 못하는 현상이다. ObjectMapper
에 JavaTimeModule
추가해서 해결
public class JsonTest {
@Test
void test() throws JsonProcessingException {
String s = "[{\"date\":\"2023-07-02 23:59:59\"}]";
ObjectMapper objectMapper = new ObjectMapper();
// ===== 추가 ======
objectMapper.registerModule(new JavaTimeModule());
Response[] value = objectMapper.readValue(s, Response[].class);
log.info("==> value[0]={}", value[0]);
}
}