将json集合响应映射到swift对象类的简单方法

将json集合响应映射到swift对象类的简单方法,json,swift,alamofire,Json,Swift,Alamofire,我尝试了很多库,Alamofire、JsonHelper、ObjectMapper等等,但不幸的是,我没有将json集合响应映射到对象类中。 我正在用swift 1.2和xcode 6.3开发一个IOS 8应用程序,我的模型有两类: 斯威夫特俱乐部 班级俱乐部{ 变量id:String=“” 变量名称:String=“” var imageUrl:String=“” var hasVip:Bool=false var desc:String=“” 变量位置:[位置]=[] } 地点:斯威夫特

我尝试了很多库,Alamofire、JsonHelper、ObjectMapper等等,但不幸的是,我没有将json集合响应映射到对象类中。 我正在用swift 1.2和xcode 6.3开发一个IOS 8应用程序,我的模型有两类:

斯威夫特俱乐部

班级俱乐部{
变量id:String=“”
变量名称:String=“”
var imageUrl:String=“”
var hasVip:Bool=false
var desc:String=“”
变量位置:[位置]=[]
}
地点:斯威夫特

类位置{
var country:String=“”
var city:String=“”
变量地址:String=“”
var-zip:String=“”
变量:[字符串]=[]
}
我有另一个类要请求我的API:

apliClient.swift

类ApiClient{
变量俱乐部=[俱乐部]?()
func getList(completionHandler:([JSON])->()){
让URL=NSURL(字符串:https://api.com/v1/clubs")
让mutableURLRequest=NSMutableURLRequest(URL:URL!)
mutableURLRequest.setValue(“内容类型”,forHTTPHeaderField:“应用程序/json”)
mutableURLRequest.HTTPMethod=“GET”
mutableURLRequest.setValue(“载体R01.iNsG3xjv/r1LDkhkGOANPv53xqUFDkPM0en5LIDxx875fBjdUZLn1jtUlKVJqVjsNwDe1Oqu2WuzjpaYbiWWhw=”,用于HttpHeader字段:“授权”)
让manager=Alamofire.manager.sharedInstance
let request=manager.request(mutableURLRequest)
request.responseJSON{(请求,响应,json,错误)在
if(json!=nil){
var jsonObj=JSON(JSON!)
如果let data=jsonObj[“hits”].arrayValue为[JSON]{
completionHandler(数据)
}
}
}
}
}
我认为,有一种简单的方法可以在swift中映射对象。我想知道,如何将completionHandler(数据)转换为[Club]对象

让数据=jsonObj[“点击”]。数组值为[JSON]

[{
“_id”:“5470DEF9E0C0BE2778012D7”,
“imageUrl:“https:\/\/s3-eu-west-1.amazonaws.com\/api static\/clubs\/5470def9e0c0be2778012d7_180.png”,
“姓名”:“蒙多”,
“hasVip”:假,
“地点”:{
“城市”:“马德里”
}
}, {
“_id”:“540b2ff281b30f3504a1c72f”,
“imageUrl:“https:\/\/s3-eu-west-1.amazonaws.com\/api static\/clubs\/540b2ff281b30f3504a1c72f_180.png”,
“名称”:“Teatro Kapital”,
“哈斯维普勒”:错,
“地点”:{
“地址”:“Atocha,125”,
“城市”:“马德里”
}
}, {
“_id”:“540cd44581b30f3504a1c73b”,
“imageUrl:“https:\/\/s3-eu-west-1.amazonaws.com\/api static\/clubs\/540cd44581b30f3504a1c73b_180.png”,
“姓名”:“查拉达”,
“哈斯维普勒”:错,
“地点”:{
“地址”:“La Bola,13号”,
“城市”:“马德里”
}
}]
对于objective-c,请尝试,它可以是您正在寻找的。。。 你可以找到更多使用它的例子

请注意关于swift的这一点(来自JSONModel的GitHub页面):

Swift在幕后的工作方式与Objective-C不同。因此,我无法找到在Swift中重新创建JSONModel的方法。Objective-C中的JSONModel通过CocoaPods或作为导入的Objective-C库在Swift应用程序中工作


更新:

查看苹果的这篇关于在Swift中使用JSON的博文

您可以使用上面提到的
ObjectMapper
库来完成此操作。只需创建
Club
类,并确保它实现了
Mappable
协议。然后,您可以使用ObjectMapper来映射数据,如下所示:

let clubs=Mapper().mapArray(JSONString)


全面披露:我是ObjectMapper的作者。

使用Swift 2.0,现在只需将json复制到即可自动生成具有完整键值映射的Swift模型,您需要做的就是通过从Json中传递数组或字典来实例化模型。

Club
中创建一个
init
,它获取一个
Json
对象,然后循环遍历数组元素,并从每个元素中生成一个
Club
对象,将该元素附加到数组中,并通过完成块传递该数组。为什么不使用SwitfyJSON和Alamofire?好的,这有助于生成大型json响应的模型。但是,我们如何将响应映射到这些类模型呢?这些模型中已经存在一些方便的方法,一旦您获得了响应字典或字典数组,只需将其传递给这些方便的模型,就可以返回映射的模型