2015-11-12 42 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) 
} 

這種方式是整齊和可讀性爲未來的開發者和具體型號內易於管理。