解析JSON,数组中的数组(Android)

时间:2013-01-11 00:15:03

标签: android json parsing

我正在尝试解析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,我设法从中获取值。但是,我如何读取内部数组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();
    }

2 个答案:

答案 0 :(得分:3)

就像

一样简单
current_condition.getJSONArray()

与json解析一样,我建议看一下这个库 http://jackson.codehaus.org/

编辑发表评论后

您发布的代码可能会得到很大改善。您正在为每个值迭代数组。你可以对数组做同样的事情。只需调用.getJsonArray(),而不是.getJsonObject()。但是,这意味着您的代码会为每个其他值抛出错误。我会再次推荐杰克逊图书馆

答案 1 :(得分:2)

weatherDescweatherIconUrl作为数组提供,因此您可以按项目访问,即在for循环内访问。

只需使用与current_condition

相同的命令