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

Swift中如何将键名含空格的JSON解码为struct结构体对象

Swift 解析含空格JSON键的映射方案

Swift 中可以通过 Codable 协议的 CodingKeys 枚举自定义属性和JSON键的映射关系,不需要让Swift属性名和JSON键完全一致,具体实现如下:

完整代码示例

// 定义结构体,遵守Codable协议
struct Details: Codable {
    // 定义符合Swift命名规范的属性
    var idNation: String
    var idYear: String
    
    // CodingKeys枚举用于映射Swift属性和JSON原始键
    enum CodingKeys: String, CodingKey {
        case idNation = "ID NATION"
        case idYear = "ID YEAR"
    }
}

解码使用示例

let jsonString = """
{
    "ID NATION": "US",
    "ID YEAR": "1995"
}
"""

guard let jsonData = jsonString.data(using: .utf8) else {
    print("JSON字符串转Data失败")
    return
}

do {
    let result = try JSONDecoder().decode(Details.self, from: jsonData)
    // 直接使用转换后的属性即可
    print(result.idNation) // 输出:US
    print(result.idYear) // 输出:1995
} catch {
    print("解码失败:\(error.localizedDescription)")
}

其他说明

  • 该方案不仅适配带空格的JSON键,也支持下划线命名、含特殊字符的JSON键、和Swift关键字重名的JSON键等场景
  • 如果仅需要解码功能,结构体可以只遵守Decodable协议,不需要遵守Encodable

内容的提问来源于stack exchange,提问作者Sri

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 01:06:00