package com.nvx.ai.config;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
/**
* 全局 Jackson 配置:将所有 {@link LocalDateTime} 字段统一序列化为 / 反序列化为
* {@code yyyy-MM-dd HH:mm:ss}(空格分隔、不带时区、北京时间原样输出)。
*
* <p>说明:{@code spring.jackson.date-format} / {@code time-zone} 只对老式的
* {@code java.util.Date} / {@code Calendar} 生效,对 JSR-310 的 {@code LocalDateTime}
* 不生效,因此这里改用 {@code JavaTimeModule} 的自定义序列化/反序列化器覆盖默认行为。</p>
*/
@Configuration
public class JacksonConfig {
private static final DateTimeFormatter FMT =
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
@Bean
public Jackson2ObjectMapperBuilderCustomizer localDateTimeFormatCustomizer() {
return builder -> {
builder.serializerByType(LocalDateTime.class, new LocalDateTimeSerializer(FMT));
builder.deserializerByType(LocalDateTime.class, new LocalDateTimeDeserializer(FMT));
};
}
}