SpringBoot全局配置long转String丢失精度的问题解决
作者:jdk1.8api 时间:2023-02-19 22:58:49
目录
第一种方式
第二种方式
第三种方式
第四种方式(缺点:将所有的数字类型都会转为字符串)
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
标签:SpringBoot,long,String
0
投稿
猜你喜欢
Android实现点击获取验证码倒计时效果
2022-08-29 09:23:41
Android基于高德地图完全自定义Marker的实现方法
2023-03-09 03:32:30
Android Studio轻松构建自定义模板的步骤记录
2023-07-19 01:11:51
给c#添加SetTimeout和SetInterval函数
2021-07-02 00:58:08
Android仿微信语音聊天功能
2022-11-24 03:36:12
C语言折半查找法的超详细讲解
2022-10-26 19:33:16
Spring计划任务用法实例详解
2021-08-03 11:41:08
SpringCloud微服务熔断器Hystrix使用详解
2023-07-06 22:57:46
深入了解java内存分配和回收策略
2023-02-27 15:16:58
C#中32位浮点数Float(Real)一步步按位Bit进行分析
2023-07-19 16:01:20
Spring实战之注入集合值操作示例
2023-03-04 04:02:53
C#影院售票系统毕业设计(3)
2023-04-24 04:08:57
Java详解表格的创建与使用流程
2021-06-19 22:58:52
hadoop实现grep示例分享
2023-12-24 05:31:04
四步五分钟Spring4快速集成Swagger
2022-02-18 08:24:15
浅谈Java中注解Annotation的定义、使用、解析
2021-07-29 04:07:52
SpringAOP事务配置语法及实现过程详解
2023-12-27 21:26:16
android之计时器(Chronometer)的使用以及常用的方法
2021-05-26 12:27:33
Flutter实现自定义搜索框AppBar的示例代码
2021-10-26 02:37:54
Android获取经纬度计算距离介绍
2022-04-30 20:00:04