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 어노테이션을 통해 역직렬화 해주었다 

 

 

성고옹~