package roomescape.common.config import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer import com.fasterxml.jackson.module.kotlin.kotlinModule import org.springframework.context.annotation.Bean import org.springframework.context.annotation.Configuration import java.time.LocalDate import java.time.LocalTime import java.time.format.DateTimeFormatter @Configuration class JacksonConfig { @Bean fun objectMapper(): ObjectMapper = ObjectMapper() .registerModule(javaTimeModule()) .registerModule(kotlinModule()) private fun javaTimeModule(): JavaTimeModule = JavaTimeModule() .addSerializer( LocalDate::class.java, LocalDateSerializer(DateTimeFormatter.ISO_LOCAL_DATE) ) .addDeserializer( LocalDate::class.java, LocalDateDeserializer(DateTimeFormatter.ISO_LOCAL_DATE) ) .addSerializer( LocalTime::class.java, LocalTimeSerializer(DateTimeFormatter.ofPattern("HH:mm")) ) .addDeserializer( LocalTime::class.java, LocalTimeDeserializer(DateTimeFormatter.ofPattern("HH:mm")) ) as JavaTimeModule }