From d29a7adc9a0cb5dde13abe16985bb66f6e375c00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90li?= <15040126243@163.com> Date: Thu, 29 Jul 2021 14:28:08 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E6=9B=B4=E6=96=B0=20BigNumberSerializ?= =?UTF-8?q?er=20=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jackson/BigNumberSerializer.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/jackson/BigNumberSerializer.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/jackson/BigNumberSerializer.java index 792da8b3..94c63afa 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/jackson/BigNumberSerializer.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/jackson/BigNumberSerializer.java @@ -7,11 +7,23 @@ import com.fasterxml.jackson.databind.ser.std.NumberSerializer; import java.io.IOException; +/** + * 超出 JS 最大最小值 处理 + * + * @author Lion Li + */ @JacksonStdImpl public class BigNumberSerializer extends NumberSerializer { - private static final long JS_NUM_MAX = 9007199254740992L; - private static final long JS_NUM_MIN = -9007199254740992L; + /** + * 根据 JS Number.MAX_SAFE_INTEGER 与 Number.MIN_SAFE_INTEGER 得来 + */ + private static final long MAX_SAFE_INTEGER = 9007199254740991L; + private static final long MIN_SAFE_INTEGER = -9007199254740991L; + + /** + * 提供实例 + */ public static final BigNumberSerializer INSTANCE = new BigNumberSerializer(Number.class); public BigNumberSerializer(Class rawType) { @@ -20,7 +32,8 @@ public class BigNumberSerializer extends NumberSerializer { @Override public void serialize(Number value, JsonGenerator gen, SerializerProvider provider) throws IOException { - if (value.longValue() >= JS_NUM_MIN && value.longValue() <= JS_NUM_MAX) { + // 超出范围 序列化位字符串 + if (value.longValue() > MAX_SAFE_INTEGER && value.longValue() < MIN_SAFE_INTEGER) { super.serialize(value, gen, provider); } else { gen.writeString(value.toString());