You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:35:55