疯狂的狮子Li
2021-08-18 0375fd319c9f3b08d255c814cb0f8521d8ec641b
ruoyi-framework/src/main/java/com/ruoyi/framework/jackson/BigNumberSerializer.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
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;
/**
 * è¶…出 JS æœ€å¤§æœ€å°å€¼ å¤„理
 *
 * @author Lion Li
 */
@JacksonStdImpl
public class BigNumberSerializer extends NumberSerializer {
   /**
    * æ ¹æ® 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<? extends Number> rawType) {
      super(rawType);
   }
   @Override
   public void serialize(Number value, JsonGenerator gen, SerializerProvider provider) throws IOException {
      // è¶…出范围 åºåˆ—化位字符串
      if (value.longValue() > MIN_SAFE_INTEGER && value.longValue() < MAX_SAFE_INTEGER) {
         super.serialize(value, gen, provider);
      } else {
         gen.writeString(value.toString());
      }
   }
}