首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在xcode中解析和分类来自AlamoFire的JSON响应

如何在xcode中解析和分类来自AlamoFire的JSON响应
EN

Stack Overflow用户
提问于 2016-03-25 05:36:10
回答 2查看 304关注 0票数 1

我正试图从这个网站https://erikberg.com/api中获得NBA的排名,我正在使用AlmoFire来请求:

Alamofire.request(.GET, "https://erikberg.com/nba/standings.json") .responseJSON { response in print(response.2.value) }

返回的是一个响应数组,其中索引0处是NSURLRequest,索引1处是NSHTTPURLResponse,索引2处是AnyObject类型的结果。打印后,AnyObject会得到这样的结果(因为数组很长,所以只显示一个团队):

Optional({ standing = ( { "away_lost" = 14; "away_won" = 21; conference = EAST; "conference_lost" = 13; "conference_won" = 29; division = CEN; "first_name" = Cleveland; "games_back" = 0; "games_played" = 71; "home_lost" = 6; "home_won" = 30; "last_five" = "4-1"; "last_name" = Cavaliers; "last_ten" = "7-3"; lost = 20; "ordinal_rank" = 1st; "playoff_seed" = 1; "point_differential" = 437; "point_differential_per_game" = "6.2"; "points_against" = 6948; "points_allowed_per_game" = "97.9"; "points_for" = 7385; "points_scored_per_game" = "104.0"; rank = 1; streak = W2; "streak_total" = 2; "streak_type" = win; "team_id" = "cleveland-cavaliers"; "win_percentage" = ".718"; won = 51; },exc...

我想知道如何解析这些数据,以便根据每个团队的排名来提取和分类。谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-25 05:41:54

您可以使用ObjectMapper解析JSON。创建一个包含所有JSON到对象映射代码的常设类。

代码语言:javascript
复制
class Standing: Mappable {
    var awayLost: Int?
    var awayWon: Int?
    .....      // Define all variables
    required init?(_ map: Map) {}

    // This function is used to map all variables to corresponding JSON strings
    func mapping(map: Map) {      
         awayLost <- map["away_lost"]
         awayWon <- map["away_won"]
         ... 
    }

类似地,创建一个父类来保存站立数组。

代码语言:javascript
复制
class ParentJson: Mappable {
    var standingsDate: String?
    var standing: [Standing]
}

func mapping(map: Map) {
    standing <- map["standing"]
}

然后在您的alamofire响应中,映射相应的类。

代码语言:javascript
复制
Alamofire.request(.GET, "https://erikberg.com/nba/standings.json")
        .responseJSON { response in
             let parentJson = Mapper<ParentJson>().map(response.2.value)
             let standingsArray: [Standing] = parentJson.standing

standingArray现在将拥有分类所需的所有数据。

票数 1
EN

Stack Overflow用户

发布于 2016-03-25 08:26:26

我使用SwiftyJSON包来处理与JSON相关的所有事情。然后,你可以用这个成语

代码语言:javascript
复制
.responseJSON { response in
    switch response.result {
    case .Success:
        if let value = response.result.value {
            let json = JSON(value)
            if let datum = json["field"].string { // Depending on expected type; see docs

            }

     case .Failure(let error):
         print(error)
     }
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36214611

复制
相关文章

相似问题

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