Soy nuevo en ObjectMapper. Tengo respuesta del servidor:
{ "123123": 10, "435555": 2, "435333": 8, "567567": 4 }Las claves (dinámicas) van a ser ID. Los valores van a ser COUNT. ¿Cómo puedo mapearlo con ObjectMapper?
Mi código no funciona porque las claves dinámicas:
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] } }Su respuesta es un objeto y puede acceder a él a través de map.JSON y su tipo es [String: Any] . Entonces puedes usarlo como un Dictionary normal.
Aquí creo una clase llamada Model que tiene una matriz de elementos (de tipo Item ) y en el func mapping(:Map) map.JSON elementos map.JSON a 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))Puedes probar
do{ let res = try JSONDecoder().decode([String:Int].self, from: data) } catch { print(error) }