Pko

Java Error 본문

language/java

Java Error

pastko 2021. 12. 8. 19:10

cannot deserialize from object value 에러

Rest API Test코드 코딩중

RestTemplate에서 반환되는 ResponseEntity.getBody 값이 DTO로 자동 변환되지 않는 오류가 발생하였다.

DTO

@Setter
@Getter
@Builder
public class ResponseDTO {
    private boolean success;
    private Object data;
    private String msg;
}

RestTemplate

ResponseDTO response= restTemplate.postForObject(
                url,
                signUpRequestDTO,
                ResponseDTO.class);
Type definition error: [simple type, class com.gteam.glog.domain.dto.ResponseDTO]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.gteam.glog.domain.dto.ResponseDTO`

처음에는 Object Type 오류로 표시되어 해당 DTO에서 Object값이 변경이 안되는것인가 하여
특정 DTO으로 변경하여 테스트 해보았지만 동일한 오류가 발생했습니다. ㅠㅠ

@Setter
@Getter
@Builder
public class SignUpResponseDTO {
    private Long id;
}
cannot deserialize from object value (no delegate- or property-based creator)

하루정도 검색하면서 @JsonAutoDetect를 추가하여 해결하였다는 분도 봤지만 해결되지 않았습니다.

역시.. 친절한 스택오버플로우에서는 이 에러가 발생한 이유를 다음과 같다고 합니다.

jackson library가 빈 생성자가 없는 모델을 생성하는 방법을 모릅니다.

바로 빈 생성자를 추가함으로서 해당 오류를 해결하였습니다.

@Setter
@Getter
@NoArgsConstructor
public class ResponseDTO {
    private boolean success;
    private Object data;
    private String msg;

    @Builder
    public ResponseDTO(Boolean success, Object data, String msg){
        this.success = success;
        this.data = data;
        this.msg = msg;
    }
}

ㅠㅠ

'language > java' 카테고리의 다른 글

java Error  (1) 2021.12.11