티스토리 뷰
안드로이드에서 서버와 통신함에 있어서 Json 포맷이 필수적으로 활용되기때문에 Gson 사용법을 정리하게 되었다.
사실 서버에서 json 규격에 맞게 데이터를 정상적으로 준다면 더 아름답게 캐스팅이 가능하지 이렇게 파싱할 일이 거이 없을 것이다.
혹시라도 만약 이렇게 이중배열 형태를 json 그대로 안주고 "" string 으로 준다면 이 방법을 권합니다.
json data
{
"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);
}
}
'Development Note > Android' 카테고리의 다른 글
[Android Java] 안드로이드 millisecond to Date, String 로 변환 (0) | 2020.04.12 |
---|---|
[Android Java] UTC Time 가져오기 (0) | 2020.04.12 |
[Android Java] 안드로이드 암호화(md5, sha256) (0) | 2020.04.12 |
[Android Java] Butter Knife 사용법 정리 (0) | 2020.04.08 |
[Android Java] Retrofit2 사용법 정리 (0) | 2020.03.25 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- DeviceModel
- nsurl 에서 nsstring 변환
- tempfile
- countryName
- ioutil
- setCancelable vs setCanceledOnTouchOutside
- java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line
- Locale.getDefault().getLanguage()
- Golang
- iTunes Store에 연결할 수 없음
- 절대값함수
- dialog
- abs
- convert nsurl to nsstring
- countryCode
- 퍼미션체크
- tempdir
- NSUserDefaults 예제
- Error Domain=SKErrorDomain Code=0
- abs 함수
- LanguageCode
- nsurl to nsstring convert
- permissionCheck
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함