Java日期Date类型序列化和反序列化(@JsonFormat、@DateTimeFormat),以及属性跳过序列化(@JsonIgnore、@JsonSerialize)

序列化和反序列化

序列化:
  1. @JsonFormat:基于fastjson
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date sendTime;
  1. @JsonSerialize:基于jackson,@JsonFormat的加强版,支持自定义,需继承JsonSerializer
@JsonSerialize(using = xxxDateJsonSerializer.class)
private Date sendTime;
反序列化:
  1. @DateTimeFormat:基于spring
@DateTimeFormat
private Date sendTime;

序列化和反序列化时的忽略

序列化
  1. 忽略为null的属性:
@JsonSerialize(include= JsonSerialize.Inclusion.NON_NULL) 
private Date sendTime;
  1. 直接忽略属性
@JsonIgnore
private Date sendTime;
反序列化
  1. 忽略未定义的属性:不加时报错
@JsonIgnoreProperties(ignoreUnknown = true)
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
@JsonFormat和@DateTimeFormat是两个常用于日期时间格式化的注解。 @JsonFormat是Jackson库中的注解,用于在序列化反序列化过程中指定日期时间的格式。它可以应用于属性、方法、字段和构造函数上。通过@JsonFormat注解,可以指定日期时间的格式、时区、语言等信息。例如: ```java @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date createTime; ``` @DateTimeFormatSpring框架中的注解,用于在数据绑定过程中将字符串转换成日期类型。它通常用于Controller层的方法参数或实体类的字段上。通过@DateTimeFormat注解,可以指定接收的字符串日期时间的格式。例如: ```java @RequestMapping("/save") public String save(@DateTimeFormat(pattern = "yyyy-MM-dd") Date date) { // ... } ``` 区别: 1. 注解来源不同:@JsonFormat来自Jackson库,@DateTimeFormat来自Spring框架。 2. 使用场景不同:@JsonFormat主要用于序列化反序列化过程中指定日期时间格式,@DateTimeFormat主要用于将字符串转换成日期类型。 3. 应用对象不同:@JsonFormat可以应用于属性、方法、字段和构造函数上,@DateTimeFormat主要应用于Controller层的方法参数或实体类的字段上。 4. 功能不同:@JsonFormat可以指定日期时间的格式、时区、语言等信息,@DateTimeFormat只能指定接收的字符串日期时间的格式。 总结来说,@JsonFormat用于控制日期时间在序列化反序列化过程中的格式,而@DateTimeFormat用于将字符串日期时间转换成具体的日期类型

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值