当前位置:   article > 正文

@DateTimeFormat 注解 和 @JsonFormat 注解_json注解 dataformat

json注解 dataformat

一、背景

 平常在web开发过程中,在前后台日期数据的交互过程中,经常会遇到一些问题。实体类里面使用的是java.util.Date类型保存日期数据。而前台向后台传递数据的时候用的是字符串。这样会出现格式转换问题。而在后台向前台传递数据的过程中。日期格式将会被转换为长整型。这显然不是我们想要的结果。为了解决此类问题。就用到了@DateTimeFormat注解  和 @JsonFormat 注解。

二、发现问题

在网上查阅资料的过程中,发现大部分作者给出的解释并不全面,大多数都是说,前台向后台传递数据用@DateTimeFormat注解。而后台向前台传递就用@JsonFormat注解。。实际上@DateTimeFormat注解只会在类似@RequestParam的请求参数(url拼接的参数才生效,如果是放到RequestBody中的form-data也是无效的)上生效,如果@DateTimeFormat放到@RequestBody下是无效的。而@JsonFormat注解却可以转换这种情况下的参数。

三、对比总结及使用

     1. @DateTimeFormat用于前台向后台 ,将传入的字符串转换为Date类型。当然只能转换类似于@RequestParam()这种url拼接的参数。

        ①引入依赖(spring就不写了)

  1. <!-- joda-time -->
  2. <dependency>
  3. <groupId>joda-time</groupId>
  4. <artifactId>joda-time</artifactId>
  5. <version>2.3</version>
  6. </dependency>

       ② 在实体类的需要类型转换的属性上加上@DateTimeFormat注解。

  1. package com.**.model;
  2. import lombok.Data;
  3. @Data
  4. public class User {
  5. private Integer id;
  6. private String userName;
  7. @DateTimeFormat(pattern = "yyyy-MM-dd")
  8. private Date birth;
  9. }

   2. @JsonFormat 后台向前台,将日期格式的数据格式转化为们所需要的数据。

                               前台向后台,将 Content-Type类型为application/json的字符串转换为Date类型。u

      ①. 引入依赖(spring boot项目已经帮我们引入了,所以不需要重复引入)

  1. <dependency>
  2. <groupId>com.fasterxml.jackson.core</groupId>
  3. <artifactId>jackson-annotations</artifactId>
  4. <version>2.8.8</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>com.fasterxml.jackson.core</groupId>
  8. <artifactId>jackson-databind</artifactId>
  9. <version>2.8.8</version>
  10. </dependency>
  11. <dependency>
  12. <groupId>org.codehaus.jackson</groupId>
  13. <artifactId>jackson-mapper-asl</artifactId>
  14. <version>1.9.13</version>
  15. </dependency>

     ② 在实体类的需要类型转换的属性上加上@JsonFormat注解。

  1. package com.**.model;
  2. import lombok.Data;
  3. @Data
  4. public class User {
  5. private Integer id;
  6. private String userName;
  7. @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
  8. private Date birth;
  9. }

3.参数解释

  1. @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
  2. pattern :需要转换的日期格式
  3. timezone:时区,北京时间东八区 所以是GMT+8

四、总结

    1.后台向前台的日期类型格式化。只需要@JsonFormat一个注解就可以了

    2.前台向后台则需要 需求分析到底使用@JsonFormat注解 还是 @DateTimeFormat注解。

 

原文链接:http://www.jhone.top

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/900294
推荐阅读
相关标签
  

闽ICP备14008679号