|
@@ -0,0 +1,59 @@
|
|
|
+package com.hfln.portal.infrastructure.config;
|
|
|
+
|
|
|
+import cn.hutool.core.date.DatePattern;
|
|
|
+import com.fasterxml.jackson.databind.DeserializationFeature;
|
|
|
+import com.fasterxml.jackson.databind.Module;
|
|
|
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
|
|
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
|
|
+import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
|
|
|
+import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
|
|
|
+import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer;
|
|
|
+import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
|
|
|
+import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
|
|
|
+import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
|
|
|
+import org.springframework.boot.autoconfigure.AutoConfigureBefore;
|
|
|
+import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
|
|
|
+import org.springframework.context.annotation.Bean;
|
|
|
+import org.springframework.context.annotation.Configuration;
|
|
|
+import org.springframework.context.annotation.Primary;
|
|
|
+import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
|
|
|
+
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.time.LocalDate;
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.time.LocalTime;
|
|
|
+import java.time.ZoneId;
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
+import java.util.Locale;
|
|
|
+import java.util.TimeZone;
|
|
|
+
|
|
|
+@Configuration
|
|
|
+@AutoConfigureBefore(JacksonAutoConfiguration.class)
|
|
|
+public class JacksonConfig {
|
|
|
+
|
|
|
+ @Bean
|
|
|
+ @Primary // 确保优先级最高
|
|
|
+ public Jackson2ObjectMapperBuilder jackson2ObjectMapperBuilder() {
|
|
|
+ return new Jackson2ObjectMapperBuilder()
|
|
|
+ .locale(Locale.CHINA)
|
|
|
+ .timeZone(TimeZone.getTimeZone(ZoneId.systemDefault()))
|
|
|
+ .modules(javaTimeModule())
|
|
|
+ .dateFormat(new SimpleDateFormat(DatePattern.NORM_DATETIME_PATTERN))
|
|
|
+ .featuresToDisable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
|
|
|
+ .findModulesViaServiceLoader(true); // 相当于原来的 findAndRegisterModules
|
|
|
+ }
|
|
|
+
|
|
|
+ private Module javaTimeModule() {
|
|
|
+ JavaTimeModule module = new JavaTimeModule();
|
|
|
+ module.addSerializer(new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN)));
|
|
|
+ module.addSerializer(new LocalTimeSerializer(DateTimeFormatter.ofPattern(DatePattern.NORM_TIME_PATTERN)));
|
|
|
+ module.addSerializer(new LocalDateSerializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)));
|
|
|
+ module.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN)));
|
|
|
+ module.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)));
|
|
|
+ module.addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern(DatePattern.NORM_TIME_PATTERN)));
|
|
|
+
|
|
|
+ module.addSerializer(Long.class, ToStringSerializer.instance);
|
|
|
+ module.addSerializer(Long.TYPE, ToStringSerializer.instance);
|
|
|
+ return module;
|
|
|
+ }
|
|
|
+}
|