以前,我正在处理的API如下所示
{
"kurumsicilno": 457.0,
"yillikizin": 30.0,
}我的模型如下所示
struct Leave: Decodable, Identifiable {
var id: Double? {
return registerNumber
}
let registerNumber: Double
let annualLeave: Double
enum CodingKeys: String, CodingKey {
case registerNumber = "kurumsicilno"
case annualLeave = "yillikizin"
}
}这是我的网络功能
let task = session.dataTask(with: request) { (data, response, error) in
if error == nil {
let decoder = JSONDecoder()
if let safeData = data {
do {
let result = try decoder.decode(Leave.self, from: safeData)
DispatchQueue.main.async {
completion(result)
}
} catch {
print(error)
}
}
}
}
task.resume()但出于某种原因,他们已将API更改为此。
{
"isSucceed": true,
"singleData": {
"sicilNo": "457",
"yillikIzin": "30",
},我应该如何修改我的模型,这样我才能像以前一样到达并获取数据?
发布于 2022-06-09 13:44:55
只需创建一个新的根结构
struct Response : Decodable {
let isSucceed: Bool
let singleData: Leave
}并且您必须更改类型和( CodingKeys之一)
struct Leave: Decodable, Identifiable {
var id: String { // no Optional!!
return registerNumber
}
let registerNumber: String
let annualLeave: String
enum CodingKeys: String, CodingKey {
case registerNumber = "sicilNo"
case annualLeave = "yillikIzin" // is this really a capital `I`?
}
}最后更改解码码
let result = try decoder.decode(Response.self, from: safeData)
DispatchQueue.main.async {
completion(result.singleData)
}您可能必须在其他代码中管理类型更改双→字符串。
https://stackoverflow.com/questions/72561246
复制相似问题