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

