[기본개념]
deserialize : 역직렬화
- JSON을 Java 타입으로 변환하는 과정
[Jackson]
spring-boot-starter-web dependency를 추가하면, 그 하위에 json객체를 파싱해주는 spring-boot-starter-json 라이브러리가 기본으로 탑재되어있다. 그 하위에는 jackson 라이브러리들 (jackson-datatype-jsr310 라이브러리 포함)이 존재한다.
Jackson 라이브러리의 @JsonFormat 어노테이션을 활용해서, 해당 오류를 해결하면 된다.
1. RequestBody로 들어온 json을 파싱하기
컨트롤러에서는 @RequestBody를 통해 request 객체를 받는다
@PostMapping("/api/requested-store/register")
public Long register(@RequestBody RequestedStoreSaveRequest request) {
return requestedStoreService.save(mapper.toRequestedStoreSave(request));
}
request객체의 필드는 다음과 같다.
필드 중 LocalTime을 사용하는 필드에 @JsonFormat(pattern="kk:mm:ss") 를 붙여주면 된다.
public class RequestedStoreSaveRequest {
...
@JsonFormat(pattern = "kk:mm:ss")
private LocalTime openTime; // 날짜 없는 시각은 localtime 사용
...
}
[참고]
https://perfectacle.github.io/2018/01/15/jackson-local-date-time-deserialize/