Pko
Java Error 본문
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 |
---|