3

我正在尝试从http://www.worldweatheronline.com JSON 提要解析天气信息。这是它的格式:

{ "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

这是我用于阅读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();
    }
4

2 回答 2

3

这很简单

current_condition.getJSONArray()

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

编辑在您发表评论后

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

于 2013-01-11T00:20:52.323 回答
2

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

只需使用与您相同的命令current_condition

于 2013-01-11T00:18:38.250 回答