retrofit2를 이용한 restfulAPI 호출시 Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $ 에러...
조회수 6693회
현재 안드로이드스튜디오로 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"
}
]
1 답변
-
Call<List<ResultsVersion>> getCurrentFirmwareVersionList();
이런식으로 받으면 안될까요?
object로 받으시고, 리스트에 넣으면 될 것 같은데요.
댓글 입력