Jackson无法将LocalDateTime序列化成字符串的解决办法 20251770编辑
Heaven helps those who help themselves
资深码农+深耕理财=财富自由
欢迎关注
资深码农+深耕理财=财富自由
欢迎关注

Jackson无法将LocalDateTime序列化成字符串的解决办法
Created by Marydon on 2021-03-17 17:17
1.情景展示
在web开发过程中,如果使用的是SpringBoot框架的话, 我们通常使用在前后端数据交互的时候,我们通常会涉及到日期类型的转换。
当我们需要将日期类型转换成字符串响应给前端时,只需要一个注解@JsonFormat就可以搞定
这样,前端接收到的将是2021-03-17 16:51:51格式的日期格式字符串,根本无需我们手动将日期转字符串。
使用@JsonFormat,进行手动序列化时,会不会出问题呢?
2.原因分析
前后端交互,使用@JsonFormat可以解决日期问题,但是,在实际开发过程中,往往我们服务器对服务器,这样一来@JsonFormat就失效了。
下面,我们来测试一下吧:
即:它只能使用于前后端交互,具体原理我不清楚。
3.解决方案
既然@JsonFormat不能用,那我们只能另想办法了
通过修改ObjectMapper日期序列化格式来实现
导包
1 2 3 4 | < dependency > < groupId >com.fasterxml.jackson.datatype < artifactId >jackson-datatype-jsr310 < version >2.11.3 |
代码实现
1 2 3 4 5 | import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | /* * 将包含LocalDateTime类型的属性进行序列化时转成时间字符串 * @description: 通过Jackson实现 * @attention: 如果自定义key名称的话,通过添加注解@JsonProperty来实现 * @date: 2021-03-17 15:42 * @param: bean * @return: java.lang.String json字符串 * 生成的日期格式:yyyy-MM-dd HH:mm:ss */ public static String fromBeanWithLocalDateTime(Object bean) { if ( null == bean) return "" ; String jsonStr = "" ; try { ObjectMapper mapper = new ObjectMapper(); // 初始化JavaTimeModule JavaTimeModule timeModule = new JavaTimeModule(); // 设置LocalDateTime的序列化格式 DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern( "yyyy-MM-dd HH:mm:ss" ); timeModule.addSerializer(LocalDateTime. class , new LocalDateTimeSerializer(dateTimeFormatter)); mapper.registerModule(timeModule); jsonStr = mapper.writeValueAsString(bean); } catch (JsonProcessingException e) { log.error( "JavaBean-->json字符串转换失败:" + e.getMessage()); return "" ; } log.debug( "JavaBean转json字符串前:\n" + bean.toString()); log.debug( "JavaBean转json字符串后:\n" + jsonStr); return jsonStr; } |
效果展示:
写在最后
哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!
相关推荐:
与君共勉:最实用的自律是攒钱,最养眼的自律是健身,最健康的自律是早睡,最改变气质的自律是看书,最好的自律是经济独立 。
您的一个点赞,一句留言,一次打赏,就是博主创作的动力源泉!
↓↓↓↓↓↓写的不错,对你有帮助?赏博主一口饭吧↓↓↓↓↓↓
本文来自博客园,作者:Marydon,转载请注明原文链接:https://www.cnblogs.com/Marydon20170307/p/14550566.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现