2015-11-12 41 views
-2

我通过以下格式的Alamofire GET请求接收一些json。从Alamofire反序列化JSON - Swift

{ 
    "result" : { 
    "id" : 3456543 
    }, 
    "error" : 0, 
    "success" : "True" 
} 

有遍历这一点,并把内容放到一个类,这样我可以有类似的简单方法...

class Issues { 
    var success: String? 
    var error: Int? 
    var resultId: Int? 
} 

回答

1

你应该考虑在Alamofire中使用SwiftyJSON。有一个简短的例子here

但是,要回答你的问题,为雨燕2,你可以做这样的:

Alamofire.request(.GET, "http://mywebservice/getstuff", parameters: nil) 
    .responseJSON { response in 
     if let json = response.result.value { 
      let issue:Issues = Issues() 
      issue.error = json["error"] as! Int 
      issue.success = json["success"] 
      // and so on... 
     } 
} 

以此作为你的类:

// 
// Issues.swift 
// 
import Foundation 

class Issues:NSObject 
{ 
    var success:String? 
    var error:Int? 
    var resultId:Int? 
} 
0

您需要调整这个为您的特定型号,但这是我通常用于解析JSON的过程。

型号:

class Category : NSObject { 

    // Model Objects 
    var categoryId: NSNumber! 
    var categoryDesc: String! 
    var inAppId: String! 
    var categoryUnlocked: NSNumber! 

    override init() { 
     self.categoryId   = 0 
     self.categoryDesc  = "" 
     self.inAppId   = "" 
     self.categoryUnlocked = 0 
    } 

    convenience init(categoryDictionary: [String : AnyObject]) { 
     self.init() 

     self.categoryId   = NSNumber(int: categoryDictionary["CategoryID"]!.intValue) 
     self.categoryDesc  = categoryDictionary["Category_Desc"] as? String ?? "" 
     self.inAppId   = categoryDictionary["InAppID"] as? String ?? "" 
     self.categoryUnlocked = categoryDictionary["CategoryUnlocked"] as? NSNumber ?? 0 
    } 
} 

随着我使用array.map功能的JSON:

var categoryList = [Category]() 
if let catArray = data["categories"] as? NSArray { 
     categoryList = catArray.map({Category(categoryDictionary: $0 as! [String : AnyObject])}) 
     CoreDataService.instance.saveCategories(categoryList) 
} 

这种方式是整齐和可读性为未来的开发者和具体型号内易于管理。