@DateTimeFormat 注解 和 @JsonFormat 注解

您所在的位置:网站首页 jsonformat和dateformat @DateTimeFormat 注解 和 @JsonFormat 注解

@DateTimeFormat 注解 和 @JsonFormat 注解

2024-07-10 12:15| 来源: 网络整理| 查看: 265

一、背景

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

二、发现问题

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

三、对比总结及使用

@DateTimeFormat用于前台向后台 ,将传入的字符串转换为Date类型。当然只能转换类似于@RequestParam()这种url拼接的参数。代码语言:txt复制①引入依赖(spring就不写了)代码语言:txt复制 joda-time joda-time 2.3 代码语言:txt复制 ② 在实体类的需要类型转换的属性上加上@DateTimeFormat注解。代码语言:java复制package com.**.model; import lombok.Data; @Data public class User { private Integer id; private String userName; @DateTimeFormat(pattern = "yyyy-MM-dd") private Date birth; }@JsonFormat 后台向前台,将日期格式的数据格式转化为们所需要的数据。代码语言:txt复制 前台向后台,将 Content-Type类型为application/json的字符串转换为Date类型。u代码语言:txt复制 ①. 引入依赖(spring boot项目已经帮我们引入了,所以不需要重复引入)代码语言:txt复制 ```java代码语言:txt复制 代码语言:txt复制 代码语言:txt复制 joda-time代码语言:txt复制 joda-time代码语言:txt复制 2.3代码语言:txt复制 代码语言:txt复制 ```代码语言:txt复制 ② 在实体类的需要类型转换的属性上加上@JsonFormat注解。代码语言:java复制package com.**.model; import lombok.Data; @Data public class User { private Integer id; private String userName; @DateTimeFormat(pattern = "yyyy-MM-dd") private Date birth; }

3.参数解释

代码语言:java复制 com.fasterxml.jackson.core jackson-annotations 2.8.8 com.fasterxml.jackson.core jackson-databind 2.8.8 org.codehaus.jackson jackson-mapper-asl 1.9.13

四、总结

代码语言:txt复制1.后台向前台的日期类型格式化。只需要@JsonFormat一个注解就可以了代码语言:txt复制2.前台向后台则需要 需求分析到底使用@JsonFormat注解 还是 @DateTimeFormat注解。


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3