首页 > 基础资料 博客日记

@DateTimeFormat和@JsonFormat

2024-05-24 11:30:03基础资料围观227

这篇文章介绍了@DateTimeFormat和@JsonFormat,分享给大家做个参考,收藏Java资料网收获更多编程知识

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

@DateTimeFormat

@DateTimeFormat 是 Spring 框架提供的注解,用于指定字符串如何转换为日期时间类型,以及如何格式化日期时间类型成字符串。通常用于 Spring MVC 控制器方法的参数或对象属性上。

示例用法:

public class MyRequest {
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date date;
    
    // getters and setters
}

在这个示例中,@DateTimeFormat 注解指定了日期字符串的格式,以便将其转换为 Date 类型。

@JsonFormat

@JsonFormat 是 Jackson 库提供的注解,用于指定 JSON 序列化和反序列化时日期时间类型的格式。通常用于 POJO 类的属性上,以影响 JSON 格式的输出。

示例用法:

public class MyResponse {
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
    private Date dateTime;
    
    // getters and setters
}

在这个示例中,@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方法。


文章来源:https://www.cnblogs.com/datangguanjunhou/p/18210333
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!

标签:

相关文章

本站推荐

标签云