Retrofit2 + GsonConverter 제너릭 타입 자동 컨버팅

조회수 1574회
public class ResultVO<T> {
    public Result result;

    public Result getResult() {
        return result;
    }

    public class Result {
        public String code;
        public ArrayList<T> data;

        public String getCode() {
            return code;
        }

        public void setCode(String code) {
            this.code = code;
        }

        public ArrayList<T> getData() {
            return data;
        }
    }
}


@POST("point/getMyPointHistory.json")
    Call<ResultArrayVO<CheeseGoldHistoryVO>> getMyPointHistory(@Query("type") String type, @Query("year") String year, @Query("month") String month);

현재 위 코드와 같이 제너릭으로형태로 바로 받고싶습니다.

하지만 https://github.com/google/gson/blob/master/UserGuide.md#TOC-Serializing-and-Deserializing-Generic-Types 같은문제가 있어 CastException이 발생하는데요.

공식문서에서 해결책이 TypeToken을 생성하라는것인데...

질문

  1. Custom Model 을 만들때 TypeAdapter를 어떻게 만들어야 할 지 모르겠습니다.
  2. AutoConverting 될때 타입을 자동으로 지정되도로 하고싶습니다.

감사합니다.

1 답변

  • 인터페이스에서는 @POST("point/getMyPointHistory.json") Call< JsonObject 또는 JsonArray >로 하고

    해당 request를 발생하는 함수의 반환 타입을 원하는 타입으로 지정하고 그에 맞게 JsonObject/JsonArray를 casting하면 될듯 합니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)