ios – ObjectMapper – 嵌套的动态键

ios – ObjectMapper – 嵌套的动态键,第1张

概述我在 Swift 3.1中编写,使用ObjectMapper将我的JSON响应映射到我的模型. 我正在尝试使用动态密钥映射这个相当复杂的JSON响应,并希望得到一些关于我做错的反馈. 一个小组有关于它的进展的统计数据.它的统计数据分为几年甚至几个月.一年内每个月都有结果,投资回报率和胜利. ROI和win只是百分比,但结果键是用下面的键1-5固定的,然后是一个整数值. 我的JSON "stats" 我在 Swift 3.1中编写,使用ObjectMapper将我的JsON响应映射到我的模型.

我正在尝试使用动态密钥映射这个相当复杂的JsON响应,并希望得到一些关于我做错的反馈.

一个小组有关于它的进展的统计数据.它的统计数据分为几年甚至几个月.一年内每个月都有结果,投资回报率和胜利. 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,"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"]    }}

我得到了什么

我得到的响应在我的GroupResponse类中有stats属性,为nil.

我可以采取哪些其他方法来实现这一目标,或者改变我的实现来完成这项工作?

解决方法 解

我通过手动映射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?}

这个问题可能是一个更好的解决方案,但这就是我现在所坚持的.

希望这有帮助!

总结

以上是内存溢出为你收集整理的ios – ObjectMapper – 嵌套的动态键全部内容,希望文章能够帮你解决ios – ObjectMapper – 嵌套的动态键所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1032166.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存