통신 및 JSONObject로 받았는데, 어떻게 데이터를 담을지 잘 이해가 안됩니다.
그래서 쉽게 설명해 드리겠습니다.
아래 JSON 형식으로 설명을 드리겠습니다. 보통 dailyBoxOfficeList에서 정보를 사용하겠죠?
{
"boxOfficeResult": {
"boxofficeType": "일별 박스오피스",
"showRange": "20120101~20120101",
"dailyBoxOfficeList": [{
"rnum": "1",
"rank": "1",
"rankInten": "0",
"rankOldAndNew": "OLD",
"movieCd": "20112207",
"movieNm": "미션임파서블:고스트프로토콜",
"openDt": "2011-12-15",
"salesAmt": "2776060500",
"salesShare": "36.3",
"salesInten": "-415699000",
"salesChange": "-13",
"salesAcc": "40541108500",
"audiCnt": "353274",
"audiInten": "-60106",
"audiChange": "-14.5",
"audiAcc": "5328435",
"scrnCnt": "697",
"showCnt": "3223"
}, {
"rnum": "2",
"rank": "2",
"rankInten": "1",
"rankOldAndNew": "OLD",
"movieCd": "20110295",
"movieNm": "마이 웨이",
"openDt": "2011-12-21",
"salesAmt": "1189058500",
"salesShare": "15.6",
"salesInten": "-105894500",
"salesChange": "-8.2",
"salesAcc": "13002897500",
"audiCnt": "153501",
"audiInten": "-16465",
"audiChange": "-9.7",
"audiAcc": "1739543",
"scrnCnt": "588",
"showCnt": "2321"
}]
}
}
데이터 저장 방식
Map = "Key" : "Value"
List = Data, Data, Data ....
우선 크게 보면 아래와 같은 형식입니다. (색상 강조 설명)
JSONOBject의 값은 "boxOfficeResult": { } 여기선 알아서 JSONObject로 받아와서 어디에 담을 필요가 없죠. 다음!
{
"boxOfficeResult": {
"boxofficeType": "일별 박스오피스",
"showRange": "20120101~20120101",
"dailyBoxOfficeList": [{
"rnum": "1",
"rank": "1",
"rankInten": "0",
"rankOldAndNew": "OLD",
"movieCd": "20112207",
"movieNm": "미션임파서블:고스트프로토콜",
"openDt": "2011-12-15",
"salesAmt": "2776060500",
"salesShare": "36.3",
"salesInten": "-415699000",
"salesChange": "-13",
"salesAcc": "40541108500",
"audiCnt": "353274",
"audiInten": "-60106",
"audiChange": "-14.5",
"audiAcc": "5328435",
"scrnCnt": "697",
"showCnt": "3223"
}, {
"rnum": "2",
"rank": "2",
"rankInten": "1",
"rankOldAndNew": "OLD",
"movieCd": "20110295",
"movieNm": "마이 웨이",
"openDt": "2011-12-21",
"salesAmt": "1189058500",
"salesShare": "15.6",
"salesInten": "-105894500",
"salesChange": "-8.2",
"salesAcc": "13002897500",
"audiCnt": "153501",
"audiInten": "-16465",
"audiChange": "-9.7",
"audiAcc": "1739543",
"scrnCnt": "588",
"showCnt": "2321"
}]
}
}
{ } 안에 들어가 있는 데이터 모습이 : 콜론으로 구분되어 있습니다. 그러면 Map이죠.
"boxofficeType" : "일별 박스오피스",
"showRange" : "20120101~20120101",
"dailyBoxOfficeList" : [{},{}]
{
"boxOfficeResult": {
"boxofficeType": "일별 박스오피스",
"showRange": "20120101~20120101",
"dailyBoxOfficeList": [{
"rnum": "1",
"rank": "1",
"rankInten": "0",
"rankOldAndNew": "OLD",
"movieCd": "20112207",
"movieNm": "미션임파서블:고스트프로토콜",
"openDt": "2011-12-15",
"salesAmt": "2776060500",
"salesShare": "36.3",
"salesInten": "-415699000",
"salesChange": "-13",
"salesAcc": "40541108500",
"audiCnt": "353274",
"audiInten": "-60106",
"audiChange": "-14.5",
"audiAcc": "5328435",
"scrnCnt": "697",
"showCnt": "3223"
}, {
"rnum": "2",
"rank": "2",
"rankInten": "1",
"rankOldAndNew": "OLD",
"movieCd": "20110295",
"movieNm": "마이 웨이",
"openDt": "2011-12-21",
"salesAmt": "1189058500",
"salesShare": "15.6",
"salesInten": "-105894500",
"salesChange": "-8.2",
"salesAcc": "13002897500",
"audiCnt": "153501",
"audiInten": "-16465",
"audiChange": "-9.7",
"audiAcc": "1739543",
"scrnCnt": "588",
"showCnt": "2321"
}]
}
}
1
|
Map<String,Object> boxOfficeResult= gson.fromJson( jsonObject.get("boxOfficeResult").toString(),new TypeToken<Map<String, Object>>(){}.getType());
|
위 줄처럼 받는다면 Map에 담긴 데이터는 아래와 같이 저장됩니다.
boxOfficeResult
Key | Value |
"boxofficeType" | "일별 박스오피스" |
"showRange" | "20120101~20120101" |
"dailyBoxOfficeList" | [ { key : Value }, { key : Value } ] |
이제 dailyBoxOfficeList에 있는 Value 모습을 보면 [ { key : Value }, { key : Value } ]되어 있습니다.
이것을 나눠서 보면 [ {Data}, {Data} ] <=List
그 안에 다시 보면 { key : Value }, { key : Value } <=Map
그런데 저것을 한 번에 가져올거기 때문에
ArrayList<>안에 다시 Map<key Type, Value Type>을 넣습니다.
ArrayList< Map<String,Object> >
천천히 보시면 이해가 가실 것 같습니다.
만약 그냥 좀 빠르게 사용하고 싶다 하시면
{} 중괄호는 Map
[] 대괄호는 List
라고 생각하시면 됩니다. ㅎㅎ
{
"boxOfficeResult": {
"boxofficeType": "일별 박스오피스",
"showRange": "20120101~20120101",
"dailyBoxOfficeList": [{
"rnum": "1",
"rank": "1",
"rankInten": "0",
"rankOldAndNew": "OLD",
"movieCd": "20112207",
"movieNm": "미션임파서블:고스트프로토콜",
"openDt": "2011-12-15",
"salesAmt": "2776060500",
"salesShare": "36.3",
"salesInten": "-415699000",
"salesChange": "-13",
"salesAcc": "40541108500",
"audiCnt": "353274",
"audiInten": "-60106",
"audiChange": "-14.5",
"audiAcc": "5328435",
"scrnCnt": "697",
"showCnt": "3223"
}, {
"rnum": "2",
"rank": "2",
"rankInten": "1",
"rankOldAndNew": "OLD",
"movieCd": "20110295",
"movieNm": "마이 웨이",
"openDt": "2011-12-21",
"salesAmt": "1189058500",
"salesShare": "15.6",
"salesInten": "-105894500",
"salesChange": "-8.2",
"salesAcc": "13002897500",
"audiCnt": "153501",
"audiInten": "-16465",
"audiChange": "-9.7",
"audiAcc": "1739543",
"scrnCnt": "588",
"showCnt": "2321"
}]
}
}
1
|
ArrayList<Map<String, Object>> jsonList = (ArrayList) boxOfficeResult.get("dailyBoxOfficeList");
|
위와 같이 받으시면 "dailyBoxOfficeList"의 데이터를 사용하실 수 있습니다.
//dailyBoxOfficeList에 있는 값을 자유롭게 사용 가능하다.
// (0) 첫번째 영화 정보
movieName1=jsonList.get(0).get("movieNm").toString(); // 미션임파서블:고스트프로토콜
rank1=jsonList.get(0).get("rank").toString(); // 1
// (1) 첫번째 영화 정보
movieName2=jsonList.get(1).get("movieNm").toString(); // 마이 웨이
rank2=jsonList.get(1).get("rank").toString(); // 2
기초 Gson 사용 예제에서 위와 같은 작업을 했습니다. 참고하세요.
2020/03/19 - [안드로이드/개발자 일상] - 안드로이드 Gson 라이브러리 (JSON 파일을 만들어서 Gson 이용)
'안드로이드 > 개발자 일상' 카테고리의 다른 글
안드로이드 설정 화면 띄우기 ( 폰에 원래 있는 Setting 화면들 ) (3) | 2020.03.24 |
---|---|
안드로이드 Retrofit2+RecyclerView 1-1(영화진흥위원회 오픈 API 이용) (6) | 2020.03.22 |
안드로이드 Gson 라이브러리 (JSON 파일을 만들어서 Gson 이용 + RecyclerView) (5) | 2020.03.21 |
안드로이드 Gson 라이브러리 (JSON 파일을 만들어서 Gson 이용) (0) | 2020.03.19 |
안드로이드 앱 권한 요청 라이브러리 AutoPermissions (2) | 2020.03.17 |
댓글