我有多个具有相似模式的响应,但一个键值始终具有不同的对象来响应 json,我想在基本模型中解码,其中一个键具有多种对象类型。
响应就像,
{
"status": true,
"message": "Success",
"data":[]
}
在data
响应中,它具有任何类型的对象数组或任何单个对象
struct BaseResponseModel: Codable {
var status: Bool
var message: String
var data: DataClass
enum CodingKeys: String, CodingKey {
case message
case data
case status
}
}
我们在这里可以做什么来使其成为具有数据类型对象传递的单个类,
任何人请..!
最佳答案
使用 Swift 泛型
,并仅在解码时提供类型:
struct BaseResponseModel<DataType: Codable>: Codable {
var status: Bool
var message: String
var data: DataType
}
用法:
let myData = try JSONDecoder().decode(BaseResponseModel<MyStruct>.self, from: data).data // For object
let myData = try JSONDecoder().decode(BaseResponseModel<[MyStruct]>.self, from: data).data // For array
注意:如果 rawValues 相同,则不需要 CodingKeys
。
关于ios - Json 解码为具有动态值类/结构类型的 swift 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62552994/