关于LocalDateTime的序列化与反序列化

本文探讨了在Java项目中遇到的LocalDateTime序列化和反序列化问题。通常,需要在实体类中添加@JsonFormat注解以确保时间以正确的Json格式返回。若缺少该注解,时间会以非期望的形式展示。正确的格式要求同时包含@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss"),用于指定日期时间格式。此外,为确保反序列化后的数据显示正常,可能需要额外的注解。如果出现字符串类型错误,检查redisConfig配置文件以确认相关设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在项目上遇到一个LocalDateTime的序列化与反序列化的问题,正常情况下只需要在返回前端的实体类加上以下标签即可以Json格式返回正常的时间类型:

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;

如果不使用该标签,那么返回前端的时间就会显示的不正常,将会以实体类的形式来展示时间。
如果只使用以下格式:

@JsonSerialize(using = LocalDateTimeSerializer.class)
private LocalDateTime createTime;

则返回的数据类似于:[2020,5,16,0,0]。
所以一定要两个标签都加上,@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”)是反序列特定的日期格式。
那么如果将时间进行反序列化之后还要数据显示正常,则需要再加上一个标签。

@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;

如果还是报错是String类型的数据的话,查看一下redisConfig配置文件中是否有下面的代码:

		mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
        mapper.registerModule(new JavaTimeModule());
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值