0

我尝试制作一个简单的天气应用程序,为此我使用 YahooWeather api。所以我得到这样的回应:

/**/yqlCallback({
    "query": {
        "count": 3,
        "results": {
            "channel": [{
                "item": {
                    "pubDate": "Fri, 16 Jan 2015 11:00 am EET",
                    "condition": {
                        "temp": "1",
                        "text": "Cloudy"
                    },
                }
            },
            {
                "item": {
                    "title": "1",

                }
            },
            {
                "item": {
                    "title": "2",

                }

            }]
        }
    }
});

我需要的唯一数据是 pubDate、temp 和 text。所以这就是我尝试获取这些值的方法。

    JSONObject main = json.getJSONObject("query").getJSONObject("result").getJSONArray("channel")
    .getJSONObject(0);
    JSONObject details = main.getJSONObject("condition");
String t1 = details.getString("text");
String t2 = details.getString("temp");
String t3 = main.getString("pubDate");

这给了我这个错误:在 JSON 数据中找不到一个或多个字段。

4

2 回答 2

0

问题是我需要在最后添加.getJSONArray("channel").getJSONObject(0).getJsSONObject("item"); ,谢谢。

于 2015-01-16T12:59:19.890 回答
0

JSONObject在当前的 json 中,没有result密钥。使用results而不是从JSONObjectresult获取:JSONObejctquery

JSONObject main = json.getJSONObject("query").
                getJSONObject("results").getJSONArray("channel");
JSONObject items = main.getJSONObject("item");
JSONObject details = items.getJSONObject("condition");
String t1 = details.getString("text");
String t2 = details.getString("temp");
于 2015-01-16T12:46:33.993 回答