Извлекайте поля динамически из API в SWIFT - PullRequest
0 голосов
/ 23 сентября 2019

У меня есть ответ от API с динамическим полем.

[{"details": { "amount": "11"},
  "wallet":"MAIN"},
 {"details": { "bonus": "12"},
 "wallet":"POKER"}]

Я хочу получить доступ к полю ,, details`` каждого объекта.Я пытался

if let jsonObject = try JSONSerialization.jsonObject(with: data, options: []) as? Array<[String: Any]> { 
completion(.success(jsonObject))}

Ответы [ 2 ]

1 голос
/ 24 сентября 2019

Самое простое решение здесь - использовать Codable и создать структуру, которая содержит словарь для "динамической" части

struct Response: Decodable {
  let details: [String: String]
  let wallet: String
} 

, а затем декодировать ее, используя JSONDecoder

* 1007.*
0 голосов
/ 23 сентября 2019

Лучше использовать Codable

struct Root: Codable {
    let details: Details
    let wallet: String
}

// MARK: - Details
struct Details: Codable {
    let amount, bonus: String?
}

let res = try? JSONDecoder().decode([Root].self,from:data)
print(res)
...