이번 시간에는 JSON 데이터를 끌어와서
Parsing 해보는 실습을 해보려고 합니다
다음과 같은 데이터가 있을 때
지하철 역명
호선
역명 유래에 대한 데이터를 출력해보겠습니다.
이때 데이터의 개수는 175입니다.
먼저 주소 끝에 있는 데이터의 개수를 175로 바꿔줍니다.
InputStream is = puftHttpClient.download(address);
String str = puftHttpClient.convert(is, "UTF-8");
JSONParser jp = new JSONParser();
JSONObject jo = (JSONObject) jp.parse(str);
다음은 라이브러리를 사용해서
Parsing에 필요한 객체들을 선언해줍니다.
TbSeoulmetroStOrigin": {
"list_total_count": 275,
"RESULT": {
"CODE": "INFO-000",
"MESSAGE": "정상 처리되었습니다"
},
"row": [
{
"SUBW_ID": "0150",
"STTN": "서울역",
"SBWY_ROUT_LN": "01호선",
"STTN_ORGN": "우리나라 서울의 중앙역인 서울역이 인근에 위치한데서 유래하였다. 1900년 남대문역으로 출발한 서울역은 우리나라 철도의 대표적인 역으로 주요 철도의 시발점이자 종착역이다. 1923년 경성역으로 개칭되었으나 광복 후에 서울역으로 불려지게 되었다."
}, .....
데이터를 보시면 TbSeoulmetroStOrigin이라는 객체 안에 있는
"row" 배열의 객체에 접근해야하기 때문에
JSONObject TbSeoulmetroStOrigin = (JSONObject) jo.get("TbSeoulmetroStOrigin");
JSONArray row = (JSONArray) TbSeoulmetroStOrigin.get("row");
JSON객체와 배열을 각각 선언해줍니다.
이제 row에 접근하여 get메소드를 쓰면 데이터를 뽑아올 수 있는데
row는 배열이므로 get메소드 안에 인덱스가 들어가야합니다.
따라서 객체의 배열을 하나 만들어서
배열에 데이터를 넣고
반복문을 써서 인덱스 별로 출력을 하는 형식으로 만들어봤습니다.
for(int i = 0; i < 175; i ++) {
JSONObject [] row2 = new JSONObject[175];
=> 데이터 개수만큼 객체 배열 생성
row2[i] = (JSONObject) row.get(i);
=> 객체 배열에 row객체의 인덱스에 해당하는 데이터를 넣음
String STTN = (String) row2[i].get("STTN");
=> 문자열에 역이름을 하나씩 넣음
System.out.println(STTN);
=> 역 이름을 출력
String SBWY_ROUT_LN = (String) row2[i].get("SBWY_ROUT_LN");
System.out.println(SBWY_ROUT_LN);
String STTN_ORGN = (String) row2[i].get("STTN_ORGN");
System.out.println(STTN_ORGN)
}
이번 실습을 해보면서
객체 배열을 처음 사용해봤는데
자료형만 객체일 뿐
사용하는 방법은 똑같아서
사용하던 대로 사용하면 될 것 같습니다.
'Java > 실습' 카테고리의 다른 글
[Java] 맛집 탐색 (1) | 2024.12.20 |
---|---|
[Java] 미세먼지 - 종합 실습 (0) | 2024.12.18 |
[Java] 기상청 (HTTP 실습) (0) | 2024.12.18 |
[Java] HTTP통신 (2) | 2024.12.18 |
[Java] Split과 Date 실습 (1) | 2024.12.17 |