##简介:
@JSONField源于fastjson,是阿里巴巴的开源框架,主要进行JSON解析和序列化。
@DateTimeFormat是spring自带的处理框架,主要用于将时间格式化。
@JsonFormat来源于jackson,Jackson是一个简单基于Java应用库,Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象。
##场景:前台时间传值与后台接参实体类属性定义类型不一致;时间格式与数据库时间格式不一致
##用法:
@DateTimeFormat:
当前台传递到后台的日期为字符串,而后台接参的实体类对应的该属性为DATE类型时。用于转换
@DateTimeFormat(pattern=“前台字符串格式”)
示例:
//实体类
public class Demo{
@DateTimeFormat(pattern = "yyyyMMdd")
private Date startDt;
}
//接口
@RequestMapping("test")
public void getDate(Demovo){
System.out.println("date1:"+vo.getDate());
}
在上面代码中,要求前端传入的日期格式为yyyyMMdd;通过注解转化为日期格式;如果没有添加 @DateTimeFormat(pattern = “yyyyMMdd”);前端传来的字符串与Date 类型不一致,会报404
@JsonFormat
当后台将日期格式的数据传递到前台时,前台拿到的是"date": “2018-08-01T14:25:31.296+0000”;我们想要将其格式化为我们相应的格式,比如格式化为“yyyyMMdd”格式,则@JsonFormat(“yyyyMMdd”)
@JSONField
用于格式化到后端的日期格式以及定义接收参数的key与传到前端的key;
当我们前台传递的参数与后台实体类对象的属性名不一致时,或者是前台需要接收的对象属性名和后台定义的不一致时;示例
//实体类
public class Demo{
@JSONField(name = "AGE")
private Date startDt;
}
//接口
@RequestMapping("test")
public void getDate(Demovo){
System.out.println("date1:"+vo.getDate());
}
这个时候前台传递的值,应该为AGE:Date;才能被startDt属性所接收到;后台传递startDt值为a时,则前台接收到的值为AGE为a