数字ID过长 精度丢失 (已解决:后端方案)

使用Fastjson和Springboot的Converter对全局Long类型统一序列化为字符串类型

直接上代码:

序列化类:

public class Serialize2String implements ObjectSerializer {

    public static final Serialize2String instance = new Serialize2String();

    @Override
    public void write(JSONSerializer jsonSerializer, Object o, Object o1, Type type, int i) {
        if (o == null) {
            jsonSerializer.out.writeNull();
            return;
        }
        jsonSerializer.out.writeString(o.toString());
    }

}

全局序列化配置:

@Configuration
public class LocalConfig implements WebMvcConfigurer {

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
        FastJsonConfig fastJsonConfig = new FastJsonConfig();
        SerializeConfig serializeConfig = SerializeConfig.getGlobalInstance();
        serializeConfig.put(Long.class, Serialize2String.instance);
        serializeConfig.put(Long.TYPE, Serialize2String.instance);
        converter.setFastJsonConfig(fastJsonConfig);
        converters.add(converter);
    }

}

 

posted @ 2021-10-16 10:05  御简  阅读(410)  评论(0编辑  收藏  举报