首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问Wunderground“每日摘要”部分的问题

访问Wunderground“每日摘要”部分的问题
EN

Stack Overflow用户
提问于 2015-08-13 22:21:29
回答 1查看 108关注 0票数 0

我有一组函数,创建这些函数是为了从Wunderground中检索数据。但是,由于“每日摘要”部分以某种方式包含在数组中,所以我不知道如何访问它。这是我无法进入的部分:

代码语言:javascript
复制
"history": {
    "dailysummary": [
     { "date": {
     "pretty": "12:00 PM PDT on August 12, 2015",
    "year": "2015",
    "mon": "08",
    "mday": "12",
    "hour": "12",
    "min": "00",
    "tzname": "America/Los_Angeles"
    },
    "fog":"0","rain":"0","snow":"0","snowfallm":"0.00","snowfalli":"0.00","monthtodatesnowfallm":"", "monthtodatesnowfalli":"","since1julsnowfallm":"", "since1julsnowfalli":"","snowdepthm":"", "snowdepthi":"","hail":"0","thunder":"0","tornado":"0","meantempm":"26", "meantempi":"79","meandewptm":"16", "meandewpti":"60","meanpressurem":"1014", "meanpressurei":"29.94","meanwindspdm":"9", "meanwindspdi":"5","meanwdire":"","meanwdird":"331","meanvism":"16", "meanvisi":"10","humidity":"","maxtempm":"33", "maxtempi":"91","mintempm":"19", "mintempi":"66","maxhumidity":"78","minhumidity":"34","maxdewptm":"17", "maxdewpti":"62","mindewptm":"15", "mindewpti":"59","maxpressurem":"1016", "maxpressurei":"30.01","minpressurem":"1012", "minpressurei":"29.88","maxwspdm":"24", "maxwspdi":"15","minwspdm":"0", "minwspdi":"0","maxvism":"16", "maxvisi":"10","minvism":"16", "minvisi":"10","gdegreedays":"28","heatingdegreedays":"0","coolingdegreedays":"14","precipm":"0.00", "precipi":"0.00","precipsource":"","heatingdegreedaysnormal":"0","monthtodateheatingdegreedays":"0","monthtodateheatingdegreedaysnormal":"0","since1sepheatingdegreedays":"","since1sepheatingdegreedaysnormal":"","since1julheatingdegreedays":"0","since1julheatingdegreedaysnormal":"17","coolingdegreedaysnormal":"5","monthtodatecoolingdegreedays":"106","monthtodatecoolingdegreedaysnormal":"69","since1sepcoolingdegreedays":"","since1sepcoolingdegreedaysnormal":"","since1jancoolingdegreedays":"600","since1jancoolingdegreedaysnormal":"280" }
    ]
}

有关如何调用API:http://devdactic.com/rest-api-parse-json-swift/的参考信息,请参阅本网站。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-13 23:55:29

您可能正在使用SwiftyJSON或其他库,但在我的示例中,我只使用NSJSONSerialization。

在这里,我进入“历史”字典,然后进入“每日摘要”字典,并将结果转换为一系列字典(假设您的JSON字典也被命名为"json“):

代码语言:javascript
复制
if let json = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: &err) as? [String:AnyObject] {
    if let history = json["history"] as? [String:AnyObject],
        let daily = history["dailysummary"] as? [[NSObject:AnyObject]] {
        // "daily" is our array
    }
}

然后,我在数组中循环(在您的示例中,其中只有一个对象,但可能有很多):一些值是字符串,另一些值是字典,比如“日期”。

我使用"if let“来安全地打开和抛出内容:

代码语言:javascript
复制
if let json = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: &err) as? [String:AnyObject] {
    if let history = json["history"] as? [String:AnyObject],
        let daily = history["dailysummary"] as? [[NSObject:AnyObject]] {
        for item in daily {
            for (key, _) in item {
                println(key) // "mintempm", "mindewpti", "since1sepheatingdegreedaysnormal", "meantempm", etc
            }
            if let coolingdegreedaysnormal = item["coolingdegreedaysnormal"] as? String {
                println(coolingdegreedaysnormal) // "5"
            }
            if let date = item["date"] as? [String:AnyObject], let pretty = date["pretty"] as? String  {
                println(pretty) // "12:00 PM PDT on August 12, 2015"
            }
        }
    }
}

如果您使用的是SwiftyJSON或等效文件,则不需要手动进行转换,但您必须使用库特定的语法,可能需要使用这种样式的转换:

代码语言:javascript
复制
for item in json["history"]["dailysummary"].array {
    // ...
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31999400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档