Ios 带可变键的地图字典
我有一个带有可变键的字典,所以映射它时遇到了问题。我的JSON看起来像:Ios 带可变键的地图字典,ios,json,swift,alamofire,Ios,Json,Swift,Alamofire,我有一个带有可变键的字典,所以映射它时遇到了问题。我的JSON看起来像: { "2396": [{ "id": 21313, "sId": 43847 }, { "id": 21314, "sId": 43841 }], "2397": [{ "id": 43237, "sId": 37321 }, { "id": 43231,
{
"2396": [{
"id": 21313,
"sId": 43847
}, {
"id": 21314,
"sId": 43841
}],
"2397": [{
"id": 43237,
"sId": 37321
}, {
"id": 43231,
"sId": 37342
}]
}
有什么建议吗?我试过ObjectMapper、AlamofireToJson等等
Alamofire给了我这个,但是与上面的相比,它看起来不像是一本字典:
{
2396 = ( {
id = "21313";
sid = "43847";
},
{
id = "21314";
sid = "43841";
}
);
2397 = ( {
id = "43237";
sid = "37321";
},
{
id = "43231";
sid = "37342";
}
);
}
通过以下电话:
Alamofire.request(url, method: .get, parameters: params, headers: headers())
.responseJSON{response in
print(response.result.value)
}
我想把上面的JSON映射到一个字典中,但我能找到方法。创建两个对象类,一个是
NSObject
,另一个是Mappable
:
class ID: NSObject {
var id:String!
var ids:[IDs]!
init(id:String, ids:[IDs]) {
self.id = id
self.ids = ids
}
}
class IDs: Mappable {
var id: NSInteger!
var sId: NSInteger!
required init?(_ map: Map) {
}
// Mappable
func mapping(map: Map) {
id <- map["id"]
sId <- map["sId"]
}
}
映射到什么?你想用这些数据做什么?您可以简单地枚举键和值…例如,如何使用Alamofire将其映射到字典。您想保留
2396
和2397
值吗?是的,没错。这就是ID。任何可以解析JSON的东西都应该不会有问题。您可以使用NSJSONSerialization
类的标准JSONObjectWithData
方法,它将返回一个字典(其中依次包含数组,其中包含更多字典)。
class ViewController: UIViewController {
var dict = [
"2396" : [
[
"id": 21313,
"sId": 43847
], [
"id" : 21314,
"sId" : 43841
]
],
"2397" : [
[
"id": 43237,
"sId": 37321
], [
"id": 43231,
"sId": 37342
]
]
]
var arrID:[ID]! = []
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
createObject()
}
func createObject(){
for (key,value) in dict {
let ids = Mapper<IDs>().mapArray(value)!
arrID.append(ID.init(id: key, ids: ids))
}
print(arrID)
}
}
(lldb) po arrID[0].id
"2397"
(lldb) po arrID[0].ids[0].id
43237
(lldb) po arrID[0].ids[0].sId
37321