0
篇帖子
从Java 8开始,LocalDateTime
作为一种更高效的日期时间处理类被引入,用以替代旧版的Date
。然而,在Spring Boot项目中,默认情况下前端传入和返回LocalDateTime
的格式可能不符合期望(例如:期望为毫秒级时间戳)。因此,需要配置自定义的序列化器和反序列化器来满足需求。
Long
或String
来接收和返回数据,以避免精度丢失问题。为了使Spring Boot应用能够正确地将LocalDateTime
与毫秒级时间戳相互转换,可以通过自定义Jackson的序列化器和反序列化器来实现。以下是具体的实现代码:
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
@Configuration
public class LocalDateTimeConfig {
@Bean
public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
return builder -> {
// 创建一个用于序列化和反序列化的DateTimeFormatter
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
// 添加自定义的LocalDateTime序列化器和反序列化器
JavaTimeModule javaTimeModule = new JavaTimeModule();
javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(dateTimeFormatter));
javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(dateTimeFormatter));
// 将JavaTimeModule添加到ObjectMapper中
builder.modules(javaTimeModule);
};
}
}
本博客内所有原创和翻译的文章的版权归本人所有,允许第三方转载,但转载时请务必保留作者名,并注明出处链接,否则本人将保留追究其法律责任的权利。
「人生在世,留句话给我吧」