From c5d46591fef9dd3d1cad6f161436a5a6c96483b0 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子li <15040126243@163.com> Date: 星期二, 07 九月 2021 13:18:36 +0800 Subject: [PATCH] update 更新 jackson 配置 支持 LocalDateTime 全局格式化 --- ruoyi-framework/src/main/java/com/ruoyi/framework/config/JacksonConfig.java | 46 ++++++++++------------- ruoyi-common/src/main/java/com/ruoyi/common/utils/JsonUtils.java | 17 ++------ 2 files changed, 25 insertions(+), 38 deletions(-) diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/JsonUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/JsonUtils.java index 676de01..7246b0a 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/JsonUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/JsonUtils.java @@ -4,6 +4,9 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; +import com.ruoyi.common.utils.spring.SpringUtils; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; import java.io.IOException; import java.util.ArrayList; @@ -15,20 +18,10 @@ * * @author 鑺嬮亾婧愮爜 */ +@NoArgsConstructor(access = AccessLevel.PRIVATE) public class JsonUtils { - private static ObjectMapper objectMapper = new ObjectMapper(); - - /** - * 鍒濆鍖� objectMapper 灞炴�� - * <p> - * 閫氳繃杩欐牱鐨勬柟寮忥紝浣跨敤 Spring 鍒涘缓鐨� ObjectMapper Bean - * - * @param objectMapper ObjectMapper 瀵硅薄 - */ - public static void init(ObjectMapper objectMapper) { - JsonUtils.objectMapper = objectMapper; - } + private static ObjectMapper objectMapper = SpringUtils.getBean(ObjectMapper.class); public static String toJsonString(Object object) { if (StringUtils.isNull(object)) { diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/JacksonConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/JacksonConfig.java index 4346610..55756d4 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/JacksonConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/JacksonConfig.java @@ -5,17 +5,18 @@ import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; -import com.ruoyi.common.utils.JsonUtils; import com.ruoyi.framework.jackson.BigNumberSerializer; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeansException; -import org.springframework.beans.factory.config.BeanPostProcessor; +import org.springframework.boot.autoconfigure.jackson.JacksonProperties; 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.math.BigDecimal; import java.math.BigInteger; import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.TimeZone; /** @@ -27,30 +28,23 @@ @Configuration public class JacksonConfig { + @Primary @Bean - public BeanPostProcessor objectMapperBeanPostProcessor() { - return new BeanPostProcessor() { - @Override - public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { - if (!(bean instanceof ObjectMapper)) { - return bean; - } - ObjectMapper objectMapper = (ObjectMapper) bean; - // 鍏ㄥ眬閰嶇疆搴忓垪鍖栬繑鍥� JSON 澶勭悊 - SimpleModule simpleModule = new SimpleModule(); - simpleModule.addSerializer(Long.class, BigNumberSerializer.INSTANCE); - simpleModule.addSerializer(Long.TYPE, BigNumberSerializer.INSTANCE); - simpleModule.addSerializer(BigInteger.class, BigNumberSerializer.INSTANCE); - simpleModule.addSerializer(BigDecimal.class, ToStringSerializer.instance); - simpleModule.addSerializer(LocalDateTime.class, LocalDateTimeSerializer.INSTANCE); - simpleModule.addDeserializer(LocalDateTime.class, LocalDateTimeDeserializer.INSTANCE); - objectMapper.registerModule(simpleModule); - objectMapper.setTimeZone(TimeZone.getDefault()); - JsonUtils.init(objectMapper); - log.info("鍒濆鍖� jackson 閰嶇疆"); - return bean; - } - }; + public ObjectMapper getObjectMapper(Jackson2ObjectMapperBuilder builder, JacksonProperties jacksonProperties) { + ObjectMapper objectMapper = builder.createXmlMapper(false).build(); + // 鍏ㄥ眬閰嶇疆搴忓垪鍖栬繑鍥� JSON 澶勭悊 + SimpleModule simpleModule = new SimpleModule(); + simpleModule.addSerializer(Long.class, BigNumberSerializer.INSTANCE); + simpleModule.addSerializer(Long.TYPE, BigNumberSerializer.INSTANCE); + simpleModule.addSerializer(BigInteger.class, BigNumberSerializer.INSTANCE); + simpleModule.addSerializer(BigDecimal.class, ToStringSerializer.instance); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern(jacksonProperties.getDateFormat()); + simpleModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(formatter)); + simpleModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(formatter)); + objectMapper.registerModule(simpleModule); + objectMapper.setTimeZone(TimeZone.getDefault()); + log.info("鍒濆鍖� jackson 閰嶇疆"); + return objectMapper; } } -- Gitblit v1.9.3