2013-01-11 141 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,我已成功地從獲得的值。但是,如何從內部陣列weatherDescweatherIconUrl讀取值?

這裏是我的閱讀precipMMpressuretemp_C等代碼:

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

做它的那樣簡單

current_condition.getJSONArray() 

同樣如JSON解析我建議在看這個庫 http://jackson.codehaus.org/

編輯在您發表評論後

你發佈的代碼可以提高很多。您正在迭代每個值的數組。你可以對數組做同樣的事情。只需調用.getJsonArray(),而不是.getJsonObject()。但是這意味着你的代碼爲每個其他值拋出一個錯誤。我會再次推薦傑克遜圖書館

+0

我試過這個,但它需要一個int值,它不需要「weatherDesc」字符串。所以我用9作爲int,但是超出範圍。 –

+0

好的,謝謝你的幫助,我是JSON的新手,我發現它很混亂。我會稍微玩一下,然後查看傑克遜圖書館。 –

+0

起初我覺得很棘手。一旦你習慣了它,這很簡單。基本上與傑克遜庫你做的Java對象和註釋變量與你想從jsonobject拉的值。沒有搞亂,它很快 – jiduvah

2

weatherDescweatherIconUrl是作爲數組,這樣你就可以通過項目即內部訪問的循環。

只要使用相同的命令,你current_condition

+0

我已經擁有了循環內部的循環嗎? –