【问题标题】:Json Decode to swift class with dynamic value class/struct typeJson 解码为具有动态值类/结构类型的 swift 类
【发布时间】:2020-10-14 14:11:17
【问题描述】:

我有多个具有相似模式的响应,但一个键值始终具有不同的对象响应 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
    }
}

我们可以在这里做些什么来使它成为具有数据类型对象传递的单个类,

请大家...!

【问题讨论】:

    标签: ios json swift generics codable


    【解决方案1】:

    使用 Swift generics,仅在解码时提供类型:

    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

    【讨论】:

    • DataType 并不总是单个对象,它可能是对象数组,它是如何工作的?
    • 添加了对象和数组的使用示例。
    猜你喜欢
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多