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

被折叠的 条评论
为什么被折叠?



