我正试图从这个网站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...
我想知道如何解析这些数据,以便根据每个团队的排名来提取和分类。谢谢
发布于 2016-03-25 05:41:54
您可以使用ObjectMapper解析JSON。创建一个包含所有JSON到对象映射代码的常设类。
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"]
...
}类似地,创建一个父类来保存站立数组。
class ParentJson: Mappable {
var standingsDate: String?
var standing: [Standing]
}
func mapping(map: Map) {
standing <- map["standing"]
}然后在您的alamofire响应中,映射相应的类。
Alamofire.request(.GET, "https://erikberg.com/nba/standings.json")
.responseJSON { response in
let parentJson = Mapper<ParentJson>().map(response.2.value)
let standingsArray: [Standing] = parentJson.standingstandingArray现在将拥有分类所需的所有数据。
发布于 2016-03-25 08:26:26
我使用SwiftyJSON包来处理与JSON相关的所有事情。然后,你可以用这个成语
.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)
}https://stackoverflow.com/questions/36214611
复制相似问题