Ios ObjectMapper-嵌套动态键
我用Swift 3.1编写,使用ObjectMapper将JSON响应映射到模型 我试图用动态键映射这个相当复杂的JSON响应,并希望得到一些关于我做错了什么的反馈 一个小组有关于其进展的统计数据。它的统计数据分为几年和几个月。一年中的每个月都有结果、ROI和胜利。ROI和win只是百分比,但是结果键是固定的,下面的键是1-5,然后是一些整数作为值 我的JSONIos 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": {
"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映射(映射:映射){
谢谢你的建议。我正在经历一个类似的过程,这非常有帮助。很高兴我能帮上忙!非常感谢!