ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

js 丢失 Long 精度 解决方案

2021-11-19 14:32:08  阅读:211  来源: 互联网

标签:jackson2HttpMessageConverter 解决方案 simpleModule js long new Long objectMapper


方法:传给前端时转成String

  • 单个
/**
 * ID
 */
@JsonSerialize(using = ToStringSerializer.class)
private Long id;

 

  • 全局(推荐使用) SpringBoot2

参考:

  1. SpringBoot全局配置long转String丢失精度的问题解决_java_脚本之家 (jb51.net)
  2. 版权声明:本文为博主原创文章,遵循 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);
    }
}

 

标签:jackson2HttpMessageConverter,解决方案,simpleModule,js,long,new,Long,objectMapper
来源: https://www.cnblogs.com/yushow1024/p/15577114.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有