我是ObjectMapper的新手。我收到服务器的回复:
{
"123123": 10,
"435555": 2,
"435333": 8,
"567567": 4
}
键(动态)将是ID。值将为COUNT。如何使用ObjectMapper映射它?
我的代码无法使用,因为动态键:
extension Item: Mappable {
private static let kId = "id"
private static let kCount = "count"
public init?(map: Map) {
self.init()
}
mutating public func mapping(map: Map) {
id <- map[Item.kId]
count <- map[Item.kCount]
}
}
答案 0 :(得分:1)
您可以尝试
do{
let res = try JSONDecoder().decode([String:Int].self, from: data)
}
catch {
print(error)
}
答案 1 :(得分:0)
您的响应是一个对象,您可以通过map.JSON
访问它,其类型为[String: Any]
。然后,您可以像普通的Dictionary
一样使用它。
在这里,我创建了一个名为Model
的类,该类具有项数组(类型为Item
),并在func mapping(:Map)
中将map.JSON
元素映射到Item
。
class Model: Mappable {
typealias Item = (id: String, count: Int)
var items: [Item] = []
required init?(map: Map) {
}
func mapping(map: Map) {
let rawDictionary = map.JSON
let items = rawDictionary.compactMap { (key, value) -> Item? in
guard let intValue = value as? Int else { return nil }
return (key, intValue)
}
self.items = items
}
}
let jsonString = """
{
"123123": 10,
"435555": 2,
"435333": 8,
"567567": 4
}
"""
let model = Model(JSONString: jsonString)
print(model?.items[0]) //Optional((id: "123123", count: 10))