Springboot - 处理LocalDateTime的入参和出参格式

出参处理

默认情况下,springboot通过jackson来序列化日期,并且提供了设置格式的属性。如下

spring:
  ...
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
  ...

简单的配置后,所有的日期都将遵循这个格式进行输出,包括LocalDateTimeDate对象字段。

入参处理

如果使用Date作为参数,则可以像下面这样处理

@JsonFormat(pattern="yyyy-MM-dd")
private Date updateTime;

如果使用DateLocalTime,这样就不行了,因为LocalDateTime始终需要包含时分秒。可以这么理解,你可以修改格式,但请必须包含时分秒。此时需要先将其转为LocalDate,在转为LocalDateTime。这需要我们自定义一个反序列化类,如下:

/**
 * 参数配置
 * @author Caesar Liu
 * @date 2019/6/3 17:59
 */
public class DateDeserializer extends JsonDeserializer<LocalDateTime> {

    @Override
    public LocalDateTime deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
    	if (StringUtils.isBlank(jsonParser.getText()))
            return null;
        LocalDate localDate = LocalDate.parse(jsonParser.getText(), DateTimeFormatter.ofPattern("yyyy-MM-dd"));
        return LocalDateTime.of(localDate, LocalTime.MIN);
    }
}

然后再字段上通过com.fasterxml.jackson.databind.annotation.JsonDeserialize注解指定使用我们定义的反序列化类。如下

@JsonDeserialize(using = DateDeserializer.class)
private LocalDateTime updateTime;

(完)


(推荐一个在线搭建框架的网站,懒猴子CG - http://cg.lazy-monkey.com

  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值