BackEnd/SpringBoot
[Debug] - (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator) 에러 해결
영지는 달리는중
2020. 8. 8. 15:54
테스트 코드 작성 중 에러발생
cannot deserialize from Object value 가 핵심 에러인 듯하여 찾아보니 Object Mapper로 매핑이 안되었던 것 같아 확인해 본 결과
*)자바의 객체를 json으로 변환하는 작업을 serialize(직렬화), json을 자바의 객체로 변환하는걸 deserialize(역직렬화)라고 한다.
첫번째 오류, 기본 생성자를 만들지 않았다 ,,,,
Json를 객체에 파싱할 때 객체의 프로퍼티 정보를 알기 위해서는
객체 생성을 위한 기본 생성자(접근 제한자 무관)가 반드시 존재해야 하고,
Getter/Setter/Field 중에 접근 제한자가 위 조건을 만족하는 것이 하나라도 있어야 한다.
(Dto에서 Builder 패턴 사용할 때 AllArgsConstructor 쓰는데, ObjectMapper를 위해서 NoArgsConstructor 를 꼭 추가해줘야 함.)
**) @RequestBody를 바인딩하기 위해서라도 꼭 추가해주기!!
▶ 참고 블로그
두번째 오류, LocalDateTime 필드의 역직렬화 오류
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
private LocalDateTime createdDate;
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
private LocalDateTime modifiedDate;
LocalDateTime 필드를 @JsonDeserialize 어노테이션을 통해 역직렬화 해주었다
성고옹~