今天前端汇报了一个传参问题,觉得很有意思,特此记录下来。下面是代码和报错。
实体类部分代码:
/**
* 出生年月
*/
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private LocalDate birth;
JSON的部分内容如下:
{
.....
"birth":"2021-10-19",
.....
}
调用接口后报错提示我无法将数据封装进LocalDate 内
查询后说是使用
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
这样的接口定义好pattern就可以
但是后来试验发现 这个注解针对于LocalDateTime类型是可以的 但是对于LocalDate 是不可以的
直到后面发现加上序列化和反序列化后
/**
* 出生年月
*/
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@JsonDeserialize(using = LocalDateDeserializer.class)
@JsonSerialize(using = LocalDateSerializer.class)
private LocalDate birth;
通过序列化(Serialize)和反序列化(Deserialize) 再指定类型是LocalDate(注意不是LocalDateTime)就可以了