簡體   English   中英

JSON 解析錯誤:無法反序列化 `java.time.LocalTime` 類型的值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM