mirror of
https://gitee.com/huangge1199_admin/vue-pro.git
synced 2024-11-30 11:11:55 +08:00
feat: 增加全局超长number序列化
This commit is contained in:
parent
a43b884c73
commit
2c8e2209e8
@ -11,6 +11,7 @@ import java.util.Set;
|
|||||||
*/
|
*/
|
||||||
public class SetUtils {
|
public class SetUtils {
|
||||||
|
|
||||||
|
@SafeVarargs
|
||||||
public static <T> Set<T> asSet(T... objs) {
|
public static <T> Set<T> asSet(T... objs) {
|
||||||
return new HashSet<>(Arrays.asList(objs));
|
return new HashSet<>(Arrays.asList(objs));
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package cn.iocoder.yudao.framework.jackson.config;
|
package cn.iocoder.yudao.framework.jackson.config;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.jackson.core.databind.NumberSerializer;
|
||||||
import cn.iocoder.yudao.framework.jackson.core.databind.LocalDateTimeDeserializer;
|
import cn.iocoder.yudao.framework.jackson.core.databind.LocalDateTimeDeserializer;
|
||||||
import cn.iocoder.yudao.framework.jackson.core.databind.LocalDateTimeSerializer;
|
import cn.iocoder.yudao.framework.jackson.core.databind.LocalDateTimeSerializer;
|
||||||
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
|
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
|
||||||
@ -32,8 +33,8 @@ public class YudaoJacksonAutoConfiguration {
|
|||||||
* 2. 新增LocalDateTime序列化、反序列化规则
|
* 2. 新增LocalDateTime序列化、反序列化规则
|
||||||
*/
|
*/
|
||||||
simpleModule
|
simpleModule
|
||||||
// .addSerializer(Long.class, ToStringSerializer.instance)
|
.addSerializer(Long.class, NumberSerializer.INSTANCE)
|
||||||
// .addSerializer(Long.TYPE, ToStringSerializer.instance)
|
.addSerializer(Long.TYPE, NumberSerializer.INSTANCE)
|
||||||
.addSerializer(LocalDateTime.class, LocalDateTimeSerializer.INSTANCE)
|
.addSerializer(LocalDateTime.class, LocalDateTimeSerializer.INSTANCE)
|
||||||
.addDeserializer(LocalDateTime.class, LocalDateTimeDeserializer.INSTANCE);
|
.addDeserializer(LocalDateTime.class, LocalDateTimeDeserializer.INSTANCE);
|
||||||
|
|
||||||
|
@ -0,0 +1,31 @@
|
|||||||
|
package cn.iocoder.yudao.framework.jackson.core.databind;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.core.JsonGenerator;
|
||||||
|
import com.fasterxml.jackson.databind.SerializerProvider;
|
||||||
|
import com.fasterxml.jackson.databind.annotation.JacksonStdImpl;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
/**
|
||||||
|
* Long序列化规则
|
||||||
|
* <p>
|
||||||
|
* 会将超长long值转换为string
|
||||||
|
*/
|
||||||
|
@JacksonStdImpl
|
||||||
|
public class NumberSerializer extends com.fasterxml.jackson.databind.ser.std.NumberSerializer {
|
||||||
|
private static final long MAX_SAFE_INTEGER = 9007199254740991L;
|
||||||
|
private static final long MIN_SAFE_INTEGER = -9007199254740991L;
|
||||||
|
|
||||||
|
public static final NumberSerializer INSTANCE = new NumberSerializer(Number.class);
|
||||||
|
public NumberSerializer(Class<? extends Number> rawType) {
|
||||||
|
super(rawType);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void serialize(Number value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
|
||||||
|
// 超出范围 序列化位字符串
|
||||||
|
if (value.longValue() > MIN_SAFE_INTEGER && value.longValue() < MAX_SAFE_INTEGER) {
|
||||||
|
super.serialize(value, gen, serializers);
|
||||||
|
} else {
|
||||||
|
gen.writeString(value.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user