Ios 带可变键的地图字典

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,

我有一个带有可变键的字典,所以映射它时遇到了问题。我的JSON看起来像:

{
    "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