ruoyi-framework/src/main/java/com/ruoyi/framework/config/JacksonConfig.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-framework/src/main/java/com/ruoyi/framework/jackson/BigNumberSerializer.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
ruoyi-framework/src/main/java/com/ruoyi/framework/config/JacksonConfig.java
@@ -2,15 +2,19 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.module.SimpleModule; 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.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import java.math.BigDecimal; import java.math.BigInteger; import java.time.LocalDateTime; import java.util.TimeZone; @@ -34,6 +38,10 @@ 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); ruoyi-framework/src/main/java/com/ruoyi/framework/jackson/BigNumberSerializer.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,29 @@ package com.ruoyi.framework.jackson; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.SerializerProvider; import com.fasterxml.jackson.databind.annotation.JacksonStdImpl; import com.fasterxml.jackson.databind.ser.std.NumberSerializer; import java.io.IOException; @JacksonStdImpl public class BigNumberSerializer extends NumberSerializer { private static final long JS_NUM_MAX = 9007199254740992L; private static final long JS_NUM_MIN = -9007199254740992L; public static final BigNumberSerializer INSTANCE = new BigNumberSerializer(Number.class); public BigNumberSerializer(Class<? extends Number> rawType) { super(rawType); } @Override public void serialize(Number value, JsonGenerator gen, SerializerProvider provider) throws IOException { if (value.longValue() >= JS_NUM_MIN && value.longValue() <= JS_NUM_MAX) { super.serialize(value, gen, provider); } else { gen.writeString(value.toString()); } } }