package ee.esutoniagodesu.config; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import ee.esutoniagodesu.util.json.JSR310DateTimeSerializer; import ee.esutoniagodesu.util.json.JSR310LocalDateDeserializer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; import java.time.*; @Configuration public class JacksonConfiguration { @Bean Jackson2ObjectMapperBuilder jackson2ObjectMapperBuilder() { JavaTimeModule module = new JavaTimeModule(); module.addSerializer(OffsetDateTime.class, JSR310DateTimeSerializer.INSTANCE); module.addSerializer(ZonedDateTime.class, JSR310DateTimeSerializer.INSTANCE); module.addSerializer(LocalDateTime.class, JSR310DateTimeSerializer.INSTANCE); module.addSerializer(Instant.class, JSR310DateTimeSerializer.INSTANCE); module.addDeserializer(LocalDate.class, JSR310LocalDateDeserializer.INSTANCE); return new Jackson2ObjectMapperBuilder() .featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS) .serializationInclusion(JsonInclude.Include.NON_NULL) .findModulesViaServiceLoader(true) //.featuresToEnable(SerializationFeature.WRITE_ENUMS_USING_TO_STRING) //.featuresToEnable(DeserializationFeature.READ_ENUMS_USING_TO_STRING) .modulesToInstall(module); } }