[英]JSON parse error: Cannot deserialize value of type `java.time.LocalTime`
我正在嘗試發布請求:
public StudioResultDto createStudio(@RequestBody StudioDto studioDto) {
var studioResultDto = new StudioResultDto();
BeanUtils.copyProperties(studioDto, studioResultDto);
studioResultDto.setId(registrationService.register(convertToEntity(studioDto)));
return studioResultDto;
}
這是我的 Studio.java class:
package com.spdu.haircutstudio.registration.web.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.time.LocalTime;
public class StudioDto {
private String name;
private String phone;
private String url;
@JsonFormat(pattern = "hh:mm:ss")
private LocalTime startTime;
@JsonFormat(pattern = "hh:mm:ss")
private LocalTime endTime;
public StudioDto() {
}
public LocalTime getEndTime() {
return endTime;
}
public void setEndTime(LocalTime endTime) {
this.endTime = endTime;
}
public LocalTime getStartTime() {
return startTime;
}
public void setStartTime(LocalTime startTime) {
this.startTime = startTime;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
但是在請求之后我得到了警告。 Jackson 由於某種原因無法將請求正文反序列化為我的 dto。 為什么會這樣? 請求正文是:
{
"endTime": {
"hour": "0",
"minute": "0",
"nano": 0,
"second": "0"
},
"name": "string",
"phone": "string",
"startTime": {
"hour": "0",
"minute": "0",
"nano": 0,
"second": "0"
},
"url": "string"
}
我沒有來自服務器的響應。 僅顯示 400 錯誤。 我試圖調試它,但我無法在方法中跟蹤它。
看pattern
@JsonFormat(pattern = "hh:mm:ss")
private LocalTime startTime;
@JsonFormat(pattern = "hh:mm:ss")
private LocalTime endTime;
這些模式是字符串,而不是對象,而且你沒有納秒。
所以,你的請求正文的這些部分
{
"hour": "0",
"minute": "0",
"nano": 0,
"second": "0"
}
應該看起來像這樣
"startTime": "00:00:00",
"endTime": "00:00:00",
我沒有來自服務器的響應。 僅顯示 404 錯誤。 我試圖調試它,但我無法在方法中跟蹤它。
為您的 JSON 解析器編寫單元測試,不要依賴服務器來告訴您代碼是否有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.