软件编程
位置:首页>> 软件编程>> java编程>> SpringBoot全局配置long转String丢失精度的问题解决

SpringBoot全局配置long转String丢失精度的问题解决

作者:jdk1.8api  发布时间:2023-02-19 22:58:49 

标签:SpringBoot,long,String
目录
  • 第一种方式

  • 第二种方式

  • 第三种方式

  • 第四种方式(缺点:将所有的数字类型都会转为字符串)

web项目中,Java后端传过来的Long/long类型,前端JS接收会丢失精度。

本文推荐第三、第四种方式

第一种方式

简单粗暴,将所有的Lang类型,改为String,数据库改成varchar类型;

第二种方式

自己建个配置类

extends WebMvcConfigurerAdapter 已经被弃用,直接实现WebMvcConfigurer该接口就行了


@EnableWebMvc
@Configuration
public class WebDataConvertConfig implements WebMvcConfigurer {
       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);
           converters.add(jackson2HttpMessageConverter);
       }

第三种方式

使用Jackson2


@Configuration
public class JacksonConfig {

/**
 * Jackson全局转化long类型为String,解决jackson序列化时long类型缺失精度问题
 * @return Jackson2ObjectMapperBuilderCustomizer 注入的对象
 */
   @Bean
   public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
       return jacksonObjectMapperBuilder -> jacksonObjectMapperBuilder
               .serializerByType(Long.class, ToStringSerializer.instance)
               .serializerByType(Long.TYPE, ToStringSerializer.instance);
   }
}

第四种方式(缺点:将所有的数字类型都会转为字符串)

bootstrap.yml添加以下配置:


spring:
 jackson:
 #将所有的number类型转为String返回
   generator:
     write_numbers_as_strings: true
   #格式化返回时间 yyyy-MM-dd HH:mm:ss
   date-format: yyyy-MM-dd HH:mm:ss
   time-zone: GMT+8

来源:https://blog.csdn.net/qq_44757149/article/details/117158087

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com