package com.xiaopeng.maintenance.config; import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer; import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer; import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import java.time.LocalTime; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatterBuilder; /** * Jackson LocalTime 序列化/反序列化配置 * *

兼容前端以 HH:mm(无秒)传参的场景,同时支持 HH:mm:ss(带秒)。

*/ @Configuration public class JacksonLocalTimeConfig { /** * LocalTime 反序列化:兼容 HH:mm / HH:mm:ss */ @Bean public Jackson2ObjectMapperBuilderCustomizer localTimeDeserializerCustomizer() { DateTimeFormatter parseFormatter = new DateTimeFormatterBuilder() .appendPattern("HH:mm") .optionalStart() .appendPattern(":ss") .optionalEnd() .toFormatter(); DateTimeFormatter writeFormatter = DateTimeFormatter.ofPattern("HH:mm"); return builder -> { builder.deserializerByType(LocalTime.class, new LocalTimeDeserializer(parseFormatter)); builder.serializerByType(LocalTime.class, new LocalTimeSerializer(writeFormatter)); }; } }