我正在尝试解析http://www.worldweatheronline.com JSON Feed中的天气信息。这是它的格式:
{ "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
?
以下是我的阅读precipMM
,pressure
,temp_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();
}
答案 0 :(得分:3)
就像
一样简单current_condition.getJSONArray()
与json解析一样,我建议看一下这个库 http://jackson.codehaus.org/
编辑发表评论后
您发布的代码可能会得到很大改善。您正在为每个值迭代数组。你可以对数组做同样的事情。只需调用.getJsonArray(),而不是.getJsonObject()。但是,这意味着您的代码会为每个其他值抛出错误。我会再次推荐杰克逊图书馆
答案 1 :(得分:2)
weatherDesc
和weatherIconUrl
作为数组提供,因此您可以按项目访问,即在for循环内访问。
只需使用与current_condition