springboot项目中Java8时间问题和Long类型丢精度问题解决

21 篇文章 0 订阅
本文介绍如何在Java配置中处理JSON传输中long类型数据可能导致的精度丢失问题,通过定制Jackson序列化模块,将long转换为字符串。同时,针对LocalDateTime,使用自定义序列化器以匹配所需的日期时间格式,确保数据正确传输和序列化。
摘要由CSDN通过智能技术生成

  long 类型在接口中传输会使最后几位变0

LocalDateTime 类型会把年月日时分秒拆成每个字段 不符合我们之间需要的格式 在配置中添加专门的序列化格式(如果之间项目里面有配置过 MappingJackson2HttpMessageConverter )就直接在里面加对应类型的序列化方式就可以

@Configuration
public class WebConfiguration implements WebMvcConfigurer {
	/**
	 * 序列化json时,将所有的long变成string
	 * 因为js中得数字类型不能包含所有的java long值
	 */
	@Override
	public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
		MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
		ObjectMapper objectMapper = new ObjectMapper();
		SimpleModule simpleModule = new SimpleModule();
		//long类型处理
		simpleModule.addSerializer(Long.class, ToStringSerializer.instance);
		simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance);
		//时间
		simpleModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(dateTimeFormat)));
		simpleModule.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern(dateFormat)));
		objectMapper.registerModule(simpleModule);
		jackson2HttpMessageConverter.setObjectMapper(objectMapper);
		converters.add(0, jackson2HttpMessageConverter);
	}

	private static final String dateFormat = "yyyy-MM-dd";
	private static final String dateTimeFormat = "yyyy-MM-dd HH:mm:ss";

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值