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