Json 使用动态值 class/struct 类型解码为 swift class
Json Decode to swift class with dynamic value class/struct type
我有多个具有相似模式的响应,但一个键值始终具有不同的对象以响应 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
}
}
我们可以在这里做些什么来使它成为单一的 class 数据类型对象 pass,
任何人请..!
使用Swiftgenerics
,解码时只提供类型:
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
注意:如果原始值相同,则不需要 CodingKeys
。
我有多个具有相似模式的响应,但一个键值始终具有不同的对象以响应 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
}
}
我们可以在这里做些什么来使它成为单一的 class 数据类型对象 pass,
任何人请..!
使用Swiftgenerics
,解码时只提供类型:
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
注意:如果原始值相同,则不需要 CodingKeys
。