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
相关产品推荐
相关产品推荐

