前言

Jackson对long型的转换是没有问题的。只不过前端js有个问题,java的long型,在转换后,js中展示会损失精度。如:1500829886697496578,在前端使用js数字类型展示是可能就变成了1500829886697496600。为了解决这个问题,一般情况下我们会将后端的Long型转换为字符串类型。

Jackson配置Long转换为字符串类型

在Spring boot环境下,配置如下代码即可

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;

@Configuration
public class JacksonConf {

    /**
     * 自定义序列化类型转换
     * 注:此处解决Long型转换后,前端js损失精度的问题,将Long型转换为字符串类型
     */
    @Bean
    public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
        Jackson2ObjectMapperBuilderCustomizer customizer = jacksonObjectMapperBuilder ->
                jacksonObjectMapperBuilder.serializerByType(Long.class, ToStringSerializer.instance)
                .serializerByType(Long.TYPE, ToStringSerializer.instance);
        return customizer;
    }
}
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐