ios - Json 解码为具有动态值类/结构类型的 swift 类

标签 ios json swift generics codable

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

相关文章:

ios - fatal error : unexpectedly found nil while unwrapping an Optional value - delegate

ios - 当我删除包含核心数据的单元格时,同一单元格显示两次

ruby-on-rails - 使用 Rails 3.2.11 和 RSpec 发布原始 JSON 数据

ios - 从侧边栏菜单隐藏 SWRevealViewController

ios - 为什么 UIButton 消耗触摸而不是 UIControl

javascript - 为什么 JSON.stringify() 在对象周围添加额外的 ' '

ios - UITableView的reloadRowsAtIndexPaths : seems to break insertRowsAtIndexPaths:

iphone - UIWebView contentEditable 图像复制粘贴崩溃 (EXC_BAD_ACCESS)

iphone - 如何按升序或降序对对象的 NSMutableArray 进行排序

json - JSON 对象在 Node.js 中是全局的吗?