retrofit2를 이용한 restfulAPI 호출시 Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $ 에러...


현재 안드로이드스튜디오로 retrofit2 라이브러리를 사용해 통신을 하려하고있습니다.

서버에서는 restfulAPI로 사용하고있으며 json타입으로 response를 해주는 상황입니다.

앱에서 받아오려하니까 Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $ 이런식으로 에러가 나면서 못가져오는데 현재 배열형태로 2개이상 가져오려할때만 이렇게 문제가 발생하는군요.. (한개는 잘받아옵니다)

받는 데이터 형식을 제대로 못한거같은데..어떻게 해야될지 잘 모르겠습니다. 검색을 해봐도 이해가 잘안되는데 도움 꼭좀 부탁드립니다.

아래는 단일 데이터 타입 부분입니다.

@JsonIgnoreProperties(ignoreUnknown=true)
public class ResultsVersion {

    private String file_name;
    private String version;

    public String getFile_name() {
        return file_name;
    }

    public void setFile_name(String file_name) {
        this.file_name = file_name;
    }

    public String getVersion() {
        return version;
    }

    public void setVersion(String version) {
        this.version = version;
    }
}

아래는 2개이상 배열 데이터 타입 부분입니다.

public class ResultsVersionList {

    private ResultsVersion[] resultsVersions;

    public ResultsVersion[] getResultsVersions() {
        return resultsVersions;
    }

}

아래는 restfulAPI 주소를 관리하는 부분 입니다.

@Headers("Content-Type: application/json")
    @GET(Constant.URL_CURRENT_FIRMWARE_VERSION)
    Call<ResultsVersionList> getCurrentFirmwareVersionList();

아래는 서버에서 보내주는 json 데이터입니다.

[
    {
        "file_name": "app5910.apk",
        "version": "5.9.10"
    },
    {
        "file_name": "app533.apk",
        "version": "5.3.3"
    },
    {
        "file_name": "app532.apk",
        "version": "5.3.2"
    },
    {
        "file_name": "app5101.apk",
        "version": "5.10.1"
    }
]

조회수 86


1 답변


좋아요
1
싫어요
채택취소하기
Call<List<ResultsVersion>> getCurrentFirmwareVersionList();

이런식으로 받으면 안될까요?

object로 받으시고, 리스트에 넣으면 될 것 같은데요.

  • 2017년 11월 29일에 작성됨
    Software Developer

  • 네~ 기존에는 [] 이런식으로 배열로 사용했었습니다 감사합니다~!^_^    ssangyongttt   2017.11.29 16:30     

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close