빌더를 이용한 객체생성 방법.
Gson gson = new GsonBuilder().create();
안드로이드에서 서버와 통신함에 있어서 Json 포맷이 필수적으로 활용되기때문에 Gson 사용법을 정리하게 되었다.
사실 서버에서 json 규격에 맞게 데이터를 정상적으로 준다면 더 아름답게 캐스팅이 가능하지 이렇게 파싱할 일이 거이 없을 것이다.
혹시라도 만약 이렇게 이중배열 형태를 json 그대로 안주고 "" string 으로 준다면 이 방법을 권합니다.
{
"statusCode":200,
"list":"[
{
"IBNSeq":4,
"AppId":200301,
"StoreList":"Google/Galaxy",
"Sort":0,
"IsDel":false,
"LangList":[
{
"Language":23,
"Title":"afewewf",
"Contents":"ewafaewf",
"Images":"https://cdn.amazon.com/200301/202008/P20080703481350230.jpg",
"Link":"awfefewewa"
},
{
"Language":10,
"Title":"ewafwef",
"Contents":"aewfaewf",
"Images":"https://cdn.amazon.com/200301/202008/P20080703482725303.jpg",
"Link":"wafewefa"
}
],
"StartDate":"2020-07-16T06:00:00",
"EndDate":"2020-11-05T06:55:00",
"RegDate":"2020-10-13T16:44:43.463"
},
{
"IBNSeq":3,
"AppId":200301,
"StoreList":"Google/IOS",
"Sort":1,
"IsDel":false,
"LangList":[
{
"Language":23,
"Title":"test",
"Contents":"tesestagaew",
"Images":"https://cdn.amazon.com/200301/202008/P20080703484426532.jpg",
"Link":"urlurlurl"
},
{
"Language":10,
"Title":"fewa",
"Contents":"eafw",
"Images":"https://cdn.amazon.com/200301/202008/P20080703484933609.jpg",
"Link":"urlurlurlurl"
}
],
"StartDate":"2020-07-23T06:00:00",
"EndDate":"2020-11-29T06:15:00",
"RegDate":"2020-10-13T16:45:00.463"
}
]"
}
public class RespAppImageBanner {
@SerializedName("IBNSeq")
@Expose
public int IBNSeq;
@SerializedName("AppId")
@Expose
public int AppId;
@SerializedName("StoreList")
@Expose
public String StoreList;
@SerializedName("Sort")
@Expose
public int Sort;
@SerializedName("IsDel")
@Expose
public boolean IsDel;
@SerializedName("StartDate")
@Expose
public String StartDate;
@SerializedName("EndDate")
@Expose
public String EndDate;
@SerializedName("RegDate")
@Expose
public String RegDate;
@SerializedName("LangList")
@Expose
public List<LangList> list = null;
public class LangList {
@SerializedName("Language")
@Expose
public String Language;
@SerializedName("Title")
@Expose
public String Title;
@SerializedName("Contents")
@Expose
public String Contents;
@SerializedName("Images")
@Expose
public String Images;
@SerializedName("Link")
@Expose
public String Link;
}
}
// response.body().toString() 이 jsonData
Gson gson = new Gson();
JsonObject info = gson.fromJson(response.body().toString(), JsonObject.class);
Type listType = new TypeToken<List<RespAppImageBanner>>(){}.getType();
List<RespAppImageBanner> imageBannerList = gson.fromJson(info.get("list").getAsString(), listType);
for(RespAppImageBanner item : imageBannerList)
{
Log.d("http", String.valueOf(item.IBNSeq));
Log.d("http", String.valueOf(item.AppId));
Log.d("http", item.StoreList);
Log.d("http", String.valueOf(item.Sort));
Log.d("http", String.valueOf(item.IsDel));
Log.d("http", item.StartDate);
Log.d("http", item.EndDate);
Log.d("http", item.RegDate);
for(RespAppImageBanner.LangList lang : item.list)
{
Log.d("http", lang.Language);
Log.d("http", lang.Title);
Log.d("http", lang.Contents);
Log.d("http", lang.Images);
Log.d("http", lang.Link);
}
}