728x90
API 요청 후 Json 응답 데이터를 객체로 매핑하는 과정에서 발생하 에러.
아래와 같은 객체로 매핑을 하려했지만 에러 발생..
원인은 바로 Inner Class가 static(정적)으로 선언되지 않는 한 단독(Outer 클래스를 참조하지 않고)으로 Inner Class의 디폴트 생성자를 호출해 인스턴스를 생성할 수 없는 것이다. 즉, 위와 같은 예외를 피하려면 Inner Class를 별도의 클래스로 생성하던가, 아니면 static Inner Class로 선언해주어야 한다.
[ 수정전 ]
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
public class ApiResponseDto {
private String id;
private List<Generation> generations;
private Usage usage;
@Data
class Generation{
private String text; // 생성한 결과
private Integer tokens; // 결과 토큰 수
}
@Data
class Usage{
@JsonProperty("prompt_tokens")
private Integer promptTokens; // 프롬프트의 토큰 수
@JsonProperty("generated_tokens")
private Integer generatedTokens; // 생성한 결과의 토큰 수 tokens x n
@JsonProperty("total_tokens")
private Integer totalTokens; // prompt_tokens x n + generated_tokens
}
}
[ 수정후 ]
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
public class ApiResponseDto {
private String id;
private List<Generation> generations;
private Usage usage;
@Data
static class Generation{
private String text; // 생성한 결과
private Integer tokens; // 결과 토큰 수
}
@Data
static class Usage{
@JsonProperty("prompt_tokens")
private Integer promptTokens; // 프롬프트의 토큰 수
@JsonProperty("generated_tokens")
private Integer generatedTokens; // 생성한 결과의 토큰 수 tokens x n
@JsonProperty("total_tokens")
private Integer totalTokens; // prompt_tokens x n + generated_tokens
}
}
728x90