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)

你可能感兴趣的:(Java)