Spring

JSON 구문 분석 오류: 문자열에서 'java.time.LocalDateTime' 유형의 값을 역직렬화할 수 없습니다.

기록만이살길 2022. 11. 6. 13:35
반응형

JSON 구문 분석 오류: 문자열에서 'java.time.LocalDateTime' 유형의 값을 역직렬화할 수 없습니다. 물어보다

1. 질문(문제점):

updateDate 속성이 있는 외부 서비스에 요청을 보내고 있습니다.

@UpdateTimestamp
@Column(name = "updated_date")
private LocalDateTime updatedDate;

내 DTO에서 응답을 받으면 다음과 같이 LocalDateTime 속성의 형식을 지정하려고 합니다.

@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd'T'HH:mm:ss")
private LocalDateTime updatedDate;

하지만 Postman에서 오류가 발생합니다.

"message": "JSON parse error: Cannot deserialize value of type `java.time.LocalDateTime` from String \"2020-04-14T10:45:07.719\": Text '2020-04-14T10:45:07.719' could not be parsed at index 14; nested exception is com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `java.time.LocalDateTime` from String \"2020-04-14T10:45:07.719\

2. 해결방안:

@JsonFormat 어노테이션을 제거하고 기본 방식으로 작동하도록 할 수 있습니다. 밀리초를 제거해도 잘 작동합니다.

@NotNull
@FutureOrPresent(message = ErrorMessages.INVALID_CAMPAIGN_START_DATE)
//@JsonFormat(pattern = "MM/dd/yyyy")
private LocalDateTime campaignStartDate;

JSON 요청:

{  "campaignStartDate" : "2020-12-31T15:53:16",
  "campaignExpDate" : "2021-01-24T15:53:16",
}

{
  "campaignStartDate" : "2020-12-31T15:53:16.45",
  "campaignExpDate" : "2021-01-24T15:53:16.45",
}

{
  "campaignStartDate" : "2020-12-31T15:53:16.445",
  "campaignExpDate" : "2021-01-24T15:53:16.445",
}

이러한 JSON 요청은 잘 작동합니다.

61202937
반응형