Long类型的,反回给前端,精度丢失

问题:本案例,实体类id采用的是雪花id生成策略,数据库类型是bigint类型的,实体类里是Long类型的。查询出来没问题,但是序列化后反给前端,精度丢失了。

解决方案一:

在对应的id上加注解:

@JsonSerialize(using = ToStringSerializer.class)
private Long id;

解决方案二:

写配置文件:以下代码就是,但是会把所有的long类型转换成String类型。建议采用第一种,比较好

@Configuration
public class JsonLongToStringConfig extends WebMvcConfigurationSupport {
    /**
     * springboot
     * 解决long、bigint转json丢失精度
     */
    @Override
    public void configureMessageConverters(List> 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);
        converters.add(jackson2HttpMessageConverter);
    }
}

 

 

 

你可能感兴趣的:(开发遇到错误)