Swift中如何将目标API数据映射为Decodable JSON结构?
构建Swift Decodable结构解析API数据
嘿,我帮你把你写的代码整理成规范格式,还补充了缺失的部分,让这个Decodable结构能完整解析API返回的数据:
import Foundation // 主模型结构体,对应API返回的公司核心数据 struct SelectedCompany: Decodable { let LastTradePrice: Double let ListedCompanyID: String let ListedCompanyName: String let MarketTotalOrdersByOrder: Int let MarketTotalOrdersByPrice: Int let MarketTotalSharesByOrder: Int let MarketTotalSharesByPrice: Int let NumberOfTrades: Int let Value: Int let Volume: Int let MarketAskOrdersByOrder: [Order] // 补充你未写完的同类型属性(根据API实际返回调整) let MarketAskOrdersByPrice: [Order]? let MarketBidOrdersByOrder: [Order]? let MarketBidOrdersByPrice: [Order]? } // 嵌套的订单结构体,对应API中订单数组的元素结构 struct Order: Decodable { // 根据API返回的订单字段定义属性,示例字段可按需修改 let Price: Double let Shares: Int let OrderCount: Int }
实用小提示:
- 如果API返回的JSON键名和Swift小驼峰命名习惯不符,可通过
CodingKeys枚举做映射,让代码更符合Swift风格:extension SelectedCompany { enum CodingKeys: String, CodingKey { case lastTradePrice = "LastTradePrice" case listedCompanyID = "ListedCompanyID" // 其他属性按此格式对应即可 } } - 对于API可能缺失的字段,把属性定义为可选类型(加
?),避免因字段缺失导致解析失败 - 务必保证属性数据类型和API返回完全匹配,比如若API返回的价格是字符串类型,需先定义为
String再转成Double,否则会触发解析错误
内容的提问来源于stack exchange,提问作者Abdulla
相关产品推荐
相关产品推荐

