2013-01-11 13 views
3

http://www.worldweatheronline.com JSON 피드의 날씨 정보를 구문 분석하려고합니다. JSON 배열 배열 분석 (Android)

{ "data" : { "current_condition" : [ { "cloudcover" : "75", 
     "humidity" : "100", 
     "observation_time" : "10:01 PM", 
     "precipMM" : "0.0", 
     "pressure" : "1015", 
     "temp_C" : "3", 
     "temp_F" : "37", 
     "visibility" : "4", 
     "weatherCode" : "143", 
     "weatherDesc" : [ { "value" : "Mist" } ], 
     "weatherIconUrl" : [ { "value" : "http://www.worldweatheronline.com/images/wsymbols01_png_64/wsymbol_0006_mist.png" } ], 
     "winddir16Point" : "N", 
     "winddirDegree" : "360", 
     "windspeedKmph" : "11", 
     "windspeedMiles" : "7" 
     } ], 

은 그래서에서 값을 얻기 위해 관리 한 current_condition JSONArray,이 : 이것은에서 오는 형식입니다. 그렇다면 내부 배열 weatherDesc 또는 weatherIconUrl에서 값을 읽으려면 어떻게해야합니까? 당신은 루프에 대한 내부 항목에 즉하여 액세스 할 수 있도록

String precipMM = null; 
    try { 
     JSONObject data = json.getJSONObject("data"); 

     JSONArray current_condition = data.getJSONArray("current_condition"); 

     for(int i = 0; i < current_condition.length(); i++) { 
      precipMM = current_condition.getJSONObject(i).getString("precipMM"); 
     } 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
+1

안녕하세요 매트, 잭슨 도서관을 사용하지 않고도이 기능을 사용할 수 있었습니까? 나는 비슷한 상황에 처해있다. –

답변

3

을 위해 그것을 나는이 라이브러리 http://jackson.codehaus.org/

편집보고 제안 단순하게 또한 JSON 구문 분석과

current_condition.getJSONArray() 

그냥 그건 같은 명령을 사용하여 의견을 말한 후

게시 한 코드가 많이 개선 될 수 있습니다. 각 값에 대해 배열을 반복합니다. 배열을 사용하여 동일한 작업을 수행 할 수 있습니다. .getJsonObject() 대신 .getJsonArray()를 호출하면됩니다. 그러나 이것은 당신의 코드가 다른 각각의 값에 대해 오류를 던지고 있음을 의미합니다. 잭슨 도서관을 다시 추천 해 드리겠습니다.

+0

이 시도했지만 int 값이 필요합니다, "weatherDesc"문자열을 사용하지 않습니다. 그래서 int로 9를 사용했지만 범위를 벗어났습니다. –

+0

귀하의 도움에 진심으로 감사드립니다. JSON을 처음 접했고 매우 혼란 스럽습니다. 나는 조금 놀고 잭슨 도서관을 살펴볼 것입니다. –

+0

처음에는 까다 롭습니다. 일단 익숙해지면 꽤 간단합니다. 본질적으로 잭슨 라이브러리를 사용하면 Java 객체를 만들고 json 객체에서 가져올 값으로 변수에 주석을 추가 할 수 있습니다. 어지럽히 지 말고 빠르다. – jiduvah

2

weatherDescweatherIconUrl가 배열로 제공됩니다

여기 precipMM, pressure, temp_C 등 독서에 대한 내 코드입니다. 당신이 current_condition

+0

루프 내부에 for 루프가 있습니까? –