| New file |
| | |
| | | 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)); |
| | | }; |
| | | } |
| | | } |
| | | |