2013-01-11 95 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

我已经拥有了循环内部的循环吗? –