본문 바로가기

Java/실습

[Java] 지하철 - JSON 실습

이번 시간에는 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