마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

JSON의 값을 각각 빼오는 방법...

0 추천
현재 지하철 막차 정보를 출력하는 코드를 진행하고 있습니다.

'서울열린데이터광장'에서 공공데이터를 사용하고 있는데

종착역에 따른 막차 시간이 다를 경우 모두 출력하고 싶습니다.

사용하고 있는 공공데이터 API의  JSON 출력값입니다.

 

{"SearchLastTrainTimeByFRCodeService":{"list_total_count":2,"RESULT":{"CODE":"INFO-000","MESSAGE":"정상 처리되었습니다"},"row":[{"FR_CODE":"325","STATION_CD":"0315","STATION_NM":"무악재","SUBWAYENAME":"구파발","LEFTTIME":"24:46:30","WEEK_TAG":"1","INOUT_TAG":"1"},{"FR_CODE":"325","STATION_CD":"0315","STATION_NM":"무악재","SUBWAYENAME":"대화","LEFTTIME":"24:17:30","WEEK_TAG":"1","INOUT_TAG":"1"}]}}

 

제가 지금 짠 코드는

public void onSuccess(int statusCode, Header[] headers, JSONObject object) {
                try {
                    JSONObject first = object.getJSONObject("SearchLastTrainTimeByFRCodeService");
                    JSONArray data = first.getJSONArray("row");
                    // data.length();
                    JSONObject test = data.getJSONObject(0);
                    show_test.setText(test.getString("LEFTTIME") + " / " + test.getString("SUBWAYENAME") + "행");
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }

다음과 같습니다...

여기서 예를들어 3호선의 무악재역의 경우 상행선 막차가

00시17분에 대화역 행이 있고 , 00시 46분에 구파발행이 있습니다.

그런데 JSON 값에서 대화행과 구파발행의 LEFTTIME과 SUBWAYENAME라는 이름이 같아

아무리 해도 구파발행 막차정보만 표시되고 각각은 출력이 되지 않습니다....

어떻게 빼올수 있을지 답변 부탁드립니다....ㅠ
익명사용자 님이 2016년 8월 23일 질문

2개의 답변

0 추천

 data.getJSONObject(1); 로 하시면 대화행이 나올  듯 한데요..ㅎㅎ

익명사용자 님이 2016년 8월 23일 답변
2016년 8월 23일 수정
아아.... 기초적인 실수를....ㅋㅋㅋ 감사합니다!!
0 추천

for문으로 json에 있는거 다 빼서 리스트나 배열에 담은다음 뿌려주면 될듯

뭐 대충 이런식?

JSONArray jsonArray = jsonObject.getJSONArray("key1");
for (int i = 0; i < jsonArray.length(); i++)
{
    JSONObject jsonObject = jsonArray.getJSONObject(i);
    array2[i] = jsonObject.getString("key2");
    array3[i] = jsonObject.getString("key3");
}
익명사용자 님이 2016년 8월 23일 답변
아아.. 배열쓰고 포문 돌리면 확실히 간편해지겠네요 감사합니다!!!
...