@JSONField、@JsonFormat及@DateTimeFormat的入参与出参
概述
大多时候注解不会用、用错,可能是你不了解这个注解导致的,有时候做测试得出的结论也会是片面的,建议根据其所属jar包看看官方文档,来理解、找解决方案
@JSONField
结束@JSONField之前,介绍一下fastjson,fastjson是阿里的开源解析库,支持将Java Bean序列化为JSON字符串,也可以将JSON字符串反序列化为Java Bean
JSONField可以用在字段上或者getter/setter方法上,它的作用有很多,包括,日期格式化,指定不序列化的字段,指定字段的顺序
对于日期的格式化,在注解上写一下就好了,它就会按照你指定的格式输出
@JSONField(format="yyyyMMdd") public Date date;
@JsonFormat
@JsonFormat是jackson提供的一个注解,主要用来控制日期和日历类型的输出格式,它可以作用在字段上,也可以作用在getter方法上。当然你也可以为它指定时区
比如
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
private Date createdDate;
输出:
{ ... , "currentDate":"2016-12-18", ...}
@DateTimeFormat
@DateTimeFormat是SpringMVC提供的一个注解,作用:格式化前台的输入数据,虽然@JSONField、@JsonFormat也都可以做到,而且@DateTimeFormat不好的一点就是,从后端读取数据出来的话,是以long类型输出的,不会格式化为你想要的类型输出.
大概总结一下吧
入参的化,其实不用太担心,无论你使用的是@JSONField、@JsonFormat及@DateTimeFormat它都将会yyyyMMdd、yyyy/MM/dd、yyyyMMdd HH:mm:ss、yyyy/MM/dd HH:mm:ss、yyyy-MM-dd、yyyy-MM-dd HH:mm:ss转换为yyyy-MM-dd或yyyy-MM-dd HH:mm:ss存储到数据库中
有时候,你前端传yyyy-MM-dd HH:mm:ss 而使用@JSONField、@JsonFormat及@DateTimeFormat指定为yyyy-MM-dd,也能正确的转换为yyyy-MM-dd HH:mm:ss存到数据库中,我想应该是fastJson、jackson、springMVC底层做了转换,以前端传过来的数据为主
对于出参,@JSONField、@JsonFormat都可以转化为你想要的日期格式,而@DateTimeFormat对于格式为yyyyMMdd、yyyy/MM/dd、yyyyMMdd HH:mm:ss、yyyy/MM/dd HH:mm:ss、yyyy-MM-dd、yyyy-MM-dd HH:mm:ss都以long类型输出
转载:https://blog.csdn.net/weixin_40598838/article/details/108965891
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
2017-04-22 集合对象与自定义javabean对象接收数据库查询的数据 (基础知识扫盲)