为什么后端调试的long类型id是正常的,一返给前端就失去后面两位数的精度为00了?
后端用swagger正常返回数据库数据
但是一到前端的preview的时候变成了"id": 1807595570584354800,“docId”: 1807595570521440200,和"dictId": 1775093876143423500
因为没有全局转换long为String 导致序列化时丢失精度
package org.jky.common.config;
import cn.hutool.core.lang.generator.SnowflakeGenerator;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* jackson配置类
* @author wangtenglong
*
*/
@Configuration
public class JacksonConfig {
/**
* Jackson全局转化long类型为String,解决jackson序列化时long类型缺失精度问题
* @return Jackson2ObjectMapperBuilderCustomizer 注入的对象
*/
@Bean
public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
return jacksonObjectMapperBuilder -> jacksonObjectMapperBuilder
.serializerByType(Long.class, ToStringSerializer.instance)
.serializerByType(Long.TYPE, ToStringSerializer.instance);
}
@Bean
public SnowflakeGenerator snowflakeGenerator(){
return new SnowflakeGenerator(0,0);
}
}
把这个配置引入项目的框架 或者自己注入一个bean就ok了