@JsonFormat、@JSONField、@DateTimeFormat的使⽤以及其区别
三者出处
1、JsonFormat来源于jackson,Jackson是⼀个简单基于Java应⽤库
2、JSONField来源于fastjson,是阿⾥巴巴的开源框架,主要进⾏JSON解析和序列化。
3、DateTimeFormat是spring⾃带的处理框架,主要⽤于将时间格式化。
1.注解@JsonFormat
⽤处:从数据库获取时间传到前端进⾏展⽰的时候,我们有时候可能⽆法得到⼀个满意的时间格式的时间⽇期,在数据库中显⽰的是正确的时间格式,获取出来却变成了很丑的时间戳,@JsonFormat注解很好的解决了这个问题,我们通过使⽤@JsonFormat可以很好的解决:后台到前台时间格式保持⼀致的问题
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
public class TestClass {
//设置时区为上海时区,时间格式⾃⼰据需求定。
@JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
private Date testTime;
public Date gettestTime() {
return testTime;
}
fastjson怎么用public void settestTime(Date testTimee) {
}
}
@JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
pattern:是你需要转换的时间⽇期的格式
timezone:是时间设置为东⼋区,避免时间在转换中有误差
使⽤了上⾯的注解,我们⽤对应的实体类来接收数据库查询出来的结果时就完成了时间格式的转换,再返回给前端时就是⼀个符合我们设置的时间格式了2.注解@DateTimeFormat
⽤处:我们在使⽤WEB服务的时,可能会需要⽤到,传⼊时间给后台,⽐如注册新⽤户需要填⼊出⽣⽇期等,这个时候前台传递给后台的时间格式同样是不⼀致的,⽽我们的与之对应的便有了另⼀个注解,@DataTimeFormat便很好的解决了这个问题
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date symstarttime;
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date symendtime;
这⾥我两个注解都同时使⽤了,因为我既需要取数据到前台,也需要前台数据传到后台,都需要进⾏时间格式的转换,可以同时使⽤
3.注解@JSONField
⽤法:⽬前最长的⽤属性是@JSONField(name=”resType”)和 @JSONField(format=”yyyy-MM-dd”)
name:@JSONField(name=”resType”)主要⽤于指定前端传到后台时对应的key值,如果bean中没有这个注解,则默认前端传过来的key是field本⾝,即如果是private String name,name前端对应的key就是name才能对应上。
format @JSONField(format=”yyyy-MM-dd”)主要⽤于格式化⽇期,⽐如前台传过来的时间是2018-07-12 17:44:08,但是通过这个注解,你存到数据库的时间就是2018-07-12 00:00:00.
4.总结
注解@JsonFormat主要是后台到前台的时间格式的转换
注解@DataTimeFormat主要是前后到后台的时间格式的转换
注解@JSONField主要⽤在java反序列化时进⾏属性的匹配。例如数据⾥key是name,实体类是userName,则使⽤@JSONField(name=”name”)则可以实现映射关系。
注解@JsonProperty主要⽤在java序列化时,使⽤@JsonProperty注解⾥value指定的值,反序列化时会将值赋值到属性字段上⾯
站在巨⼈肩膀上摘苹果
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论