从 SWIFT 中的 API 动态获取字段

Fetch fields dynamically from API in SWIFT

我收到来自 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))}

最好用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)

此处最简单的解决方案是使用 Codable 并创建一个包含 "dynamic" 部分的字典的结构

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

然后使用JSONDecoder

对其进行解码
do {
  let result = try JSONDecoder().decode([Response].self, from: data)
  print(result)
  //...
} catch {
  print(error)
}