SpringBoot全局配置long转String丢失精度的问题解决
目录
- 第一种方式
- 第二种方式
- 第三种方式
- 第四种方式(缺点:将所有的数字类型都会转为字符串)
本文推荐第三、第四种方式
第一种方式
简单粗暴,将所有的Lang类型,改为String,数据库改成varchar类型;
第二种方式
自己建个配置类
extends WebMvcConfigurerAdapter 已经被弃用,直接实现WebMvcConfigurer该接口就行了
@EnableWebMvc@Configurationpublic class WebDataConvertConfig implements WebMvcConfigurer {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); }
第三种方式
使用Jackson2
@Configurationpublic class JacksonConfig { /*** Jackson全局转化long类型为String,解决jackson序列化时long类型缺失精度问题* @return Jackson2ObjectMapperBuilderCustomizer 注入的对象*/@Beanpublic 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:ssdate-format: yyyy-MM-dd HH:mm:sstime-zone: GMT+8
【SpringBoot全局配置long转String丢失精度的问题解决】到此这篇关于SpringBoot全局配置long转String丢失精度的问题解决的文章就介绍到这了,更多相关SpringBoot long转String丢失精度内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- vue-cli|vue-cli 3.x vue.config.js 配置
- Activiti(一)SpringBoot2集成Activiti6
- SpringBoot调用公共模块的自定义注解失效的解决
- 解决SpringBoot引用别的模块无法注入的问题
- 从战略性的角度可以配置股票
- springboot使用redis缓存
- 缓存有关的配置和属性
- Spring|Spring Boot 自动配置的原理、核心注解以及利用自动配置实现了自定义 Starter 组件
- springboot整合数据库连接池-->druid
- Vagrant|Vagrant (三) - 网络配置