() { @Override public void serialize( LocalDate localDate, JsonGenerator jsonGenerator, SerializerProvider serializerProvider ) throws IOException { jsonGenerator.writeString(DateTimeFormatter.ofPattern("yyyy-MM-dd").format(localDate)); } }); // LocalTime -> "15:04:28" module.addSerializer(LocalTime"> () { @Override public void serialize( LocalDate localDate, JsonGenerator jsonGenerator, SerializerProvider serializerProvider ) throws IOException { jsonGenerator.writeString(DateTimeFormatter.ofPattern("yyyy-MM-dd").format(localDate)); } }); // LocalTime -> "15:04:28" module.addSerializer(LocalTime"> () { @Override public void serialize( LocalDate localDate, JsonGenerator jsonGenerator, SerializerProvider serializerProvider ) throws IOException { jsonGenerator.writeString(DateTimeFormatter.ofPattern("yyyy-MM-dd").format(localDate)); } }); // LocalTime -> "15:04:28" module.addSerializer(LocalTime">
public class JacksonUtils {
  public static final ObjectMapper OBJECT_MAPPER = createObjectMapper();

  public static ObjectMapper createObjectMapper() {
    return new ObjectMapper()
      .registerModule(new JavaTimeModule())
      .registerModule(javaDateTimeModule())
      .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
      .configure(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES, false)
      ;
  }

  public static Module javaDateTimeModule() {
    SimpleModule module = new SimpleModule();

    // LocalDate -> "2024-07-26"
    module.addSerializer(LocalDate.class, new JsonSerializer<>() {
      @Override
      public void serialize(
        LocalDate localDate,
        JsonGenerator jsonGenerator,
        SerializerProvider serializerProvider
      )
        throws IOException {
        jsonGenerator.writeString(DateTimeFormatter.ofPattern("yyyy-MM-dd").format(localDate));
      }
    });

    // LocalTime -> "15:04:28"
    module.addSerializer(LocalTime.class, new JsonSerializer<>() {
      @Override
      public void serialize(
        LocalTime localTime,
        JsonGenerator jsonGenerator,
        SerializerProvider serializerProvider
      )
        throws IOException {
        jsonGenerator.writeString(DateTimeFormatter.ofPattern("kk:mm:ss").format(localTime));
      }
    });

    // LocalDateTime -> "2024-07-26T15:04:28"
    module.addSerializer(LocalDateTime.class, new JsonSerializer<>() {
      @Override
      public void serialize(
        LocalDateTime localDateTime,
        JsonGenerator jsonGenerator,
        SerializerProvider serializerProvider
      ) throws IOException {
        jsonGenerator.writeString(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'kk:mm:ss").format(localDateTime));
      }
    });

    return module;
  }
}