我目前正在使用ObjectMapper for Swift将JSON对象从API映射到模型对象
我的api会返回一个像这样的JSON:
{
"tracks": {
"1322": {
"id": 1322,
"gain": 80
},
"1323": {
"id": 1323,
"gain": 80
},
"1324": {
"id": 1324,
"gain": 80
},
"1325": {
"id": 1325,
"gain": 80
}
}
}
感谢您帮忙解决这个问题......
干杯斯蒂芬
答案 0 :(得分:2)
我有类似的事情,这是我的JSON:
{
"goals": {
"total": 0,
"ecpa": 0,
"data": {
"575afbdca5a101e3088b2b6554398b0c": {
"volume": 1,
"ecpa": 4,
"coa": "5.00"
},
"575afbdca5a101e3088b2b6554398frt": {
"volume": 3,
"ecpa": 1,
"coa": "1.00"
}
}
}
}
这是实现Mappable协议的StatsGoal类
import ObjectMapper
class StatsGoal: Mappable {
var total: Double?
var ecpa: Double?
var data: [String : StatsGoalData]?
required init?(_ map: Map) {
}
// Mappable
func mapping(map: Map) {
total <- map["total"]
ecpa <- map["ecpa"]
data <- map["data"]
}
}
这是实现Mappable协议的StatsGoalData,在StatsGoal类中用作类属性(子对象)
import ObjectMapper
class StatsGoalData: Mappable {
var volume: Double?
var ecpa: Double?
var coa: Double?
required init?(_ map: Map) {
}
// Mappable
func mapping(map: Map) {
volume <- map["volume"]
ecpa <- map["ecpa"]
coa <- map["coa"]
}
}
这是映射
后迭代数据属性的方法 for element in stats {
let data = element.goals?.data
for statsGoalData in data! {
let statsGoalDataElement = statsGoalData.1
print(statsGoalDataElement.ecpa!)
}
}
答案 1 :(得分:1)
我遇到了类似的问题。不幸的是,我没有找到一种方法来选择一些东西,而无需使用索引或硬编码密钥。
但是对于您的情况,您可以这样做:
func mapping(map: Map) {
id <- map["0.id"]
gain <- map["0.gain"]
}