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 序列化/反序列化配置
|
*
|
* <p>兼容前端以 HH:mm(无秒)传参的场景,同时支持 HH:mm:ss(带秒)。</p>
|
*/
|
@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));
|
};
|
}
|
}
|