この json を次のように解析して、AlbumResponse
内部に別の 2 つのオブジェクトを持つという名前のオブジェクトに変換しようAlbum
としていますPaginationInfo
。レトロフィット バージョン 2.0
[
{
"id": "6",
"name": "King Stays King",
"artist_name":"Timbaland",
"image":""
},
{
"id": "7",
"name": "East Atlanta Santa 2",
"artist_name":"Gucci Mane",
"image":""
},
{
"id": "8",
"name": "The cuban connect",
"artist_name":"Phophit",
"image":""
},
{
"id": "9",
"name": "Shmoney Keeps",
"artist_name":"Calling",
"image":""
},
{
"id": "10",
"name": "Cabin Fever 3",
"artist_name":"Wiz khalifa",
"image":""
}
],
{
"nextPage": "http://private-ede172-mymixtapez1.apiary-mock.com/features/page_3/",
"itemsTotal": 10,
"page": 2,
"pagerMax": 2
}
アルバムクラス
public class Album {
long id;
String name;
@SerializedName("artist_name")
String artistName;
String image;
}
PaginationInfo クラス
public class PaginationInfo {
int page;
int pagerMax;
int nextPage;
int itemsTotal;
}
上記の両方のクラスを内部に持ちAlbum
、List
public class AlbumResponse {
public List<Album> albums;
public PaginationInfo paginationInfo;
}
リクエスト
Call<AlbumResponse> responseCall = albumService.features();
responseCall.enqueue(new Callback<AlbumResponse>() {
@Override
public void onResponse(Response<AlbumResponse> response, Retrofit retrofit) {
if(response.isSuccess()) {
AlbumResponse albumResponse = response.body();
PaginationInfo paginationInfo = albumResponse.getPaginationInfo();
}
System.out.println();
}
@Override
public void onFailure(Throwable t) {
System.out.println(t.getMessage());
}
});
インターフェース
public interface AlbumService {
@GET("/features/")
Call<AlbumResponse> features();
}
Throwable
問題は、以下を含むa を取得していることです。
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: BEGIN_OBJECT が必要でしたが、1 行目と 2 列目のパス $` で BEGIN_ARRAY でした
誰かが私を助けてくれますか、スタックオーバーフローで答えが見つかりませんでした。ありがとう。