@DateTimeFormat和@JsonFormat

打印 上一主题 下一主题

主题 922|帖子 922|积分 2766

@DateTimeFormat 和 @JsonFormat 是 Spring 和 Jackson 中用于处理日期时间格式的注解,它们有差别的作用:
@DateTimeFormat

@DateTimeFormat 是 Spring 框架提供的注解,用于指定字符串如何转换为日期时间类型,以及如何格式化日期时间类型成字符串。通常用于 Spring MVC 控制器方法的参数或对象属性上。
示例用法:
  1. public class MyRequest {
  2.     @DateTimeFormat(pattern = "yyyy-MM-dd")
  3.     private Date date;
  4.    
  5.     // getters and setters
  6. }
复制代码
在这个示例中,@DateTimeFormat 注解指定了日期字符串的格式,以便将其转换为 Date 类型。
@JsonFormat

@JsonFormat 是 Jackson 库提供的注解,用于指定 JSON 序列化和反序列化时日期时间类型的格式。通常用于 POJO 类的属性上,以影响 JSON 格式的输出。
示例用法:
  1. public class MyResponse {
  2.     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
  3.     private Date dateTime;
  4.    
  5.     // getters and setters
  6. }
复制代码
在这个示例中,@JsonFormat 注解指定了日期时间的格式,以便 JSON 序列化和反序列化时使用。
区别


  • @DateTimeFormat 是 Spring 框架提供的,用于处理字符串到日期时间类型的转换和格式化。
  • @JsonFormat 是 Jackson 库提供的,用于处理 JSON 格式到日期时间类型的转换和格式化。
固然它们的功能有些重叠,但它们的使用场景差别:@DateTimeFormat 用于处理 HTTP 请求参数的转换,而 @JsonFormat 用于处理 JSON 数据的序列化和反序列化。
实际应用场景

在Controller中使用Java对象接收前端传来的查询参数,这个时间必要使用@DateTimeFormat来格式化前端传来的日期格式,如果这个对象只是作为查询参数,那么只必要加@DateTimeFormat 这一个注解就够了,如果同时作为返回VO,那么就得加上 @JsonFormat用于 JSON 数据的序列化和反序列化。
还有一个场景,就是对象固然没有作为VO使用,但是作为Feign接口的查询对象,这个时间也涉及了 JSON 数据的序列化和反序列化,以是也得加上@JsonFormat。另外,Feign不支持使用GET请求但是使用对象作为参数,如果要使用对象作为参数,必须顺应POST方法。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

莫张周刘王

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表