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);
long spring是什么意思
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);
}
}
第四种⽅式(缺点:将所有的数字类型都会转为字符串)
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
到此这篇关于SpringBoot全局配置long转String丢失精度的问题解决的⽂章就介绍到这了,更多相关Spri
ngBoot long转String丢失精度内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论