[ERROR] cannot deserialize from Object value

minjung sun·2023년 3월 13일
0

Error Fix

목록 보기
1/1

API BODY 로 작성한 Req 클래스에서 다음과 같은 에러가 발생했다.

cannot deserialize from Object value (no delegate- or property-based Creator)"

API를 다루는 코드를 여러번 만들었는데 이런 에러를 처음 발견했던 이유가 있었다.
기존 코드에서는 Req 클래스에서 생성자를 별도로 만든 코드가 없었기 때문이다.

에러

{
    "status": 400,
    "reason_phrase": "Bad Request",
    "messages": [
        "JSON parse error: Cannot construct instance of `com.kt.cloud.commonwebdto.CopyParameterGroupReq` (although at least one Creator exists): cannot deserialize from Object value (no delegate- or property-based Creator)"
    ],
    "method": "POST",
    "path": "/v1.0/d1/paas/55811c9a5588491fa5f0b2e8c291ef65/dbaas/parameter-groups/0b6c06b6-65d4-4f68-9781-227603971a38/copy",
    "timestamp": "2023-03-10 14:47:32"
}

원인

Jackson Library가 빈 생성자가 없는 model을 생성하는 방법은 모른다고 한다.
-> 자세한 이유는 다른 Chapter 에서 다뤄보자.

해결 : Default 생성자 추가

즉, @NoArgsConstructor 어노테이션을 추가해주면 해결된다.

@Data
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) // REST 요청에 사용시, 필요
@NoArgsConstructor	// default 생성자 추가
public class CopyParameterGroupReq {
    String targetTenantId;
    public CopyParameterGroupReq(String targetTenantId) {
        this.targetTenantId = targetTenantId;
    }
}

0개의 댓글