方法:传给前端时转成String
- 单个
/** * ID */ @JsonSerialize(using = ToStringSerializer.class) private Long id;
- 全局(推荐使用) SpringBoot2
参考:
- SpringBoot全局配置long转String丢失精度的问题解决_java_脚本之家 (jb51.net)
-
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:http://www.miss168.net/detail/science/631252567581528064/0/844370244045639680
/** * WebMvc配置 * * @author : JZDELD * @date : 2021/11/19 14:00 */ @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter(); ObjectMapper objectMapper = new ObjectMapper(); /** * 序列换成json时,将所有的long变成string * 因为js中得数字类型不能包含所有的java long值 */ SimpleModule simpleModule = new SimpleModule(); simpleModule.addSerializer(Long.class, ToStringSerializer.instance); simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance); objectMapper.registerModule(simpleModule); jackson2HttpMessageConverter.setObjectMapper(objectMapper); /** * 现在好多项目都用到了long型ID,如果不做处理,返回到前端的精度会丢失,为了解决这个方法, * 只能重写configureMessageConverters,很多人都遇到重写这个不生效的情况,都有分析原因, * 是因为有一个默认的消息转换器排在我们自定义的前面导致不生效,有的说加注解@EnableWebMvc, * 有的说定义一个Bean等等,知道原因后解决其实没那么复杂,我们只需要将自定义的消息转换器放到前边即可, * 下面是代码: */ // index 0 关键 核心就在这里,把它添加到首位还担心他不生效吗 converters.add(0, jackson2HttpMessageConverter); } }