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