Ios ObjectMapper-嵌套动态键

Ios ObjectMapper-嵌套动态键,ios,json,swift,objectmapper,Ios,Json,Swift,Objectmapper,我用Swift 3.1编写,使用ObjectMapper将JSON响应映射到模型 我试图用动态键映射这个相当复杂的JSON响应,并希望得到一些关于我做错了什么的反馈 一个小组有关于其进展的统计数据。它的统计数据分为几年和几个月。一年中的每个月都有结果、ROI和胜利。ROI和win只是百分比,但是结果键是固定的,下面的键是1-5,然后是一些整数作为值 我的JSON "stats": { "2017": { "1": { "results": {

我用Swift 3.1编写,使用ObjectMapper将JSON响应映射到模型

我试图用动态键映射这个相当复杂的JSON响应,并希望得到一些关于我做错了什么的反馈

一个小组有关于其进展的统计数据。它的统计数据分为几年和几个月。一年中的每个月都有结果、ROI和胜利。ROI和win只是百分比,但是结果键是固定的,下面的键是1-5,然后是一些整数作为值

我的JSON

"stats": {
    "2017": {
        "1": {
            "results": {
                "1": 13,
                "2": 3,
                "3": 1,
                "4": 1,
                "5": 0
            },
            "roi": 0.40337966202464975,
            "win": 0.8181818181818182
        },
        "2": {
            "results": {
                "1": 13,
                "2": 5,
                "3": 1,
                "4": 2,
                "5": 1
            },
            "roi": 0.26852551067922953,
            "win": 0.717948717948718
        }
    }
}
我的车型

class GroupResponse: Mappable {
    var stats: [String: [String: StatsMonthResponse]]?

    func mapping(map: Map) {
        stats   <- map["stats"]
    }
}

class StatsMonthResponse: Mappable {
    var tips: [String: Int]?
    var roi: Double?
    var win: Double?

    func mapping(map: Map) {
        tips    <- map["results"]
        roi     <- map["roi"]
        win     <- map["win"]
    }
}
类组响应:可映射{
变量统计:[字符串:[字符串:StatsMonthResponse]]?
func映射(映射:映射){

统计数据解决方案

我通过手动映射JSON解决了我的问题

class GroupResponse: Mappable {

    var stats: [String: StatsYear]?

    func mapping(map: Map) {
        stats   <- map["stats"]
    }
 }

class StatsYear: Mappable {

    var months: [String: StatsMonth] = [:]

    override func mapping(map: Map) {

        for (monthKey, monthValue) in map.JSON as! [String: [String: Any]] {

            let month = StatsMonth()

            for (monthKeyType, valueKeyType) in monthValue {

                if monthKeyType == "results" {
                    let tipResultDict = valueKeyType as! [String: Int]

                    for (result, tipsForResult) in tipResultDict {
                        month.tips[result] = tipsForResult
                    }
                }
                else if monthKeyType == "roi" {
                    month.roi = valueKeyType as? Double
                }
                else if monthKeyType == "win" {
                    month.win = valueKeyType as? Double
                }
            }
            months[monthKey] = month
        }
    }
}

class StatsMonth {

    var tips: [String: Int] = [:]
    var roi: Double?
    var win: Double?
}
类组响应:可映射{
变量统计:[字符串:StatsYear]?
func映射(映射:映射){

谢谢你的建议。我正在经历一个类似的过程,这非常有帮助。很高兴我能帮上忙!非常感谢!