一、原因
Long类型id前端接收之后会有精度丢失,导致后面几位都为零。
二、解决
Long类型转为String类型,传给前端,但后端是每个接口都要去转换,所以最好后端做一个全局的。
三、解决方案
直接贴代码:
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
@Configuration
public class JacksonConfig {
@Bean
@Primary
@ConditionalOnMissingBean(ObjectMapper.class)
public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder)
{
ObjectMapper objectMapper = builder.createXmlMapper(false).build();
// 全局配置序列化返回 JSON 处理
SimpleModule simpleModule = new SimpleModule();
//JSON Long ==> String
simpleModule.addSerializer(Long.class, ToStringSerializer.instance);
objectMapper.registerModule(simpleModule);
return objectMapper;
}
}
四、完美解决
当Long类型的ID在前端展示时出现精度丢失,可以通过将Long转换为String类型传递给前端来解决。在后端实现全局转换,通过配置Jackson ObjectMapper,注册一个模块,将Long类型序列化为String,避免精度问题。此方法简化了每个接口的转换工作,提供了一种统一的解决方案。
1320

被折叠的 条评论
为什么被折叠?



