无需第三方库,创建类Objective-C风格的Swift Codable JSON解析模型
Swift Codable 模型实现(Objective-C风格)
没问题,我帮你把给出的Objective-C接口转换成纯Swift的Codable模型,完全不依赖第三方库,直接用系统自带的JSON解析API就能处理你提供的JSON数据。
1. Payload 模型类
对应你Objective-C里的Payload接口,我们创建一个继承自NSObject的Swift类,同时遵循Codable协议:
@objcMembers class Payload: NSObject, Codable { // 和Objective-C @property 风格一致,设置默认值避免解析崩溃 var responseCode: Int = 0 var nextCheckTime: Int = 30 }
2. MessageModel 主模型类
对应你给出的MessageModel接口,同样继承NSObject并遵循Codable:
@objcMembers class MessageModel: NSObject, Codable { var type: String = "" // 因为JSON里payload是可选存在的,这里设为可选类型更安全 var payload: Payload? = nil }
3. JSON 解析示例
下面是如何把你提供的JSON字符串解析成MessageModel实例的代码:
let msg = """ {"type":"TYPE_NM","payload":{"responseCode":0,"nextCheckTime":30}} """ do { // 把字符串转成Data,用系统JSONDecoder解析 guard let jsonData = msg.data(using: .utf8) else { print("Failed to convert string to data") return } let messageModel = try JSONDecoder().decode(MessageModel.self, from: jsonData) // 打印解析结果 print("Type: \(messageModel.type)") if let payload = messageModel.payload { print("Response Code: \(payload.responseCode)") print("Next Check Time: \(payload.nextCheckTime)") } } catch { print("解析出错:\(error.localizedDescription)") }
关键说明
- 使用
@objcMembers修饰类,让所有属性都能被Objective-C访问,完美匹配你要的Objective-C风格属性 - 继承
NSObject和你给出的Objective-C接口结构保持一致 - 所有属性都设置了默认值,和Objective-C中属性的默认行为对齐,避免因为JSON缺失某个键导致解析崩溃
- 完全依赖系统的
Codable协议和JSONDecoder,不需要任何第三方解析库
内容的提问来源于stack exchange,提问作者Sagar Snehi
相关产品推荐
相关产品推荐

