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

Swift 4中使用Codable解析JSON时CityUser字段为nil的问题

解决Swift Codable解析时CityUser字段为nil的问题

嘿,我一眼就看出问题出在哪了!你的JSON里对应CityUser的键是"CityUser"(首字母大写),但你Data结构体里的属性是cityUser(首字母小写),而你没给Data结构体添加CodingKeys来做字段映射,Codable默认没法自动识别这种首字母大小写的差异,所以才会解析成nil。

解决方法很简单,给你的Data结构体加上CodingKeys枚举,明确把Swift里的cityUser映射到JSON里的"CityUser":

struct Data : Codable {
    let cityUser : CityUser?
    let cityUserId : Int?
    let email : String?
    let tokenInfo : TokenInfo?
    
    enum CodingKeys: String, CodingKey {
        case cityUser = "CityUser" // 关键的映射在这里
        case cityUserId
        case email
        case tokenInfo
    }
}

当然,还有另一种思路:你可以给JSONDecoder设置keyDecodingStrategy来自定义键的转换规则,比如处理首字母大小写的转换,但对于单个字段的差异来说,直接添加CodingKeys是最直接且清晰的方式,不容易出错。

修改完之后再运行你的解码代码,response.data?.cityUser就能正确获取到isEmailVerified和UserId的值啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:52:09