在我的春季启动应用程序中,我有预订控制器,它具有相应的服务,存储库和控制器。我的预订模型是这样的:
@JsonFormat(pattern = "yyyy-MM-dd")
@Column(name = "datetime")// corresponds to value
private Date date;
public Date getDatetime() {
return this.date;
}
public void setDateTime(Date dateTime) {
this.date = dateTime;
}
控制器
@GetMapping("api/booking_details/{userEmail}")
@ResponseBody
public ResponseEntity<List<Booking>> getDetails(
@PathVariable @Email String userEmail) {
return new ResponseEntity<>(bookService.findByEmail(userEmail), HttpStatus.OK);
}
对应的get请求是
api/booking_details/
我得到的响应是:
{
"datetime": "2021-09-12T16:01:04.000+00:00",
"date": "2021-09-12"
}
谁能告诉我有两个值响应的原因是什么?
问题是getter和setter方法没有被识别为date parameter's
getter和setter方法。你可以做两件事,
将getter和setter方法的名称重命名如下,
public Date getDate() {
return this.date;
}
public void setDate(Date date) {
this.date = date;
}
或者使用@JsonProperty("date")
注释来注释getter和setter方法。只对getter方法添加注释也是足够的。
@JsonProperty("date")
public Date getDatetime() {
return this.date;
}
@JsonProperty("date")
public void setDateTime(Date dateTime) {
this.date = dateTime;
}
看起来像"日期"属性和getDateTime()方法的返回值正在被序列化。
我通常不会期待"日期"。属性,这是私有的,得到序列化,但也许是因为你有@JsonFormat注释?
getDateTIme()返回值是序列化的,因为它的名字表明它是一个Java Bean属性。
如果你正在寻找的只是格式化日期,我会尝试移动@JsonFormat注释到方法。