Ios 使用Codable解析JSON,swift 4
我使用swift4和Codables解析JSON 以下是我的JSON:Ios 使用Codable解析JSON,swift 4,ios,json,swift,swift4,codable,Ios,Json,Swift,Swift4,Codable,我使用swift4和Codables解析JSON 以下是我的JSON: { "data": { "email": "testuser14324@testuser.com", "cityUserId": 38, "CityUser": { "isEmailVerified": false, "UserId": 711 }, "tokenInfo":
{
"data": {
"email": "testuser14324@testuser.com",
"cityUserId": 38,
"CityUser": {
"isEmailVerified": false,
"UserId": 711
},
"tokenInfo": {
"accessToken": "eyJsds"
}
},
"error": false
}
下面是我正在使用的模型
struct RootClass : Codable {
let data : Data?
let error : Bool?
}
有关数据:
struct Data : Codable {
let cityUser : CityUser?
let cityUserId : Int?
let email : String?
let tokenInfo : TokenInfo?
}
城市用户:
struct CityUser : Codable {
let userId : Int?
let isEmailVerified : Bool?
enum CodingKeys: String, CodingKey {
case userId = "UserId"
case isEmailVerified = "isEmailVerified"
}
}
对于令牌:
struct TokenInfo : Codable {
let accessToken : String?
}
将其解码为:
let response = try JSONDecoder().decode(RootClass.self, from: resJson as! Data)
问题:
response.data?.email = testuser14324@testuser.com
response.data?.tokenInfo?.accessToken = eyJsds
response.data?.cityUser = nil
它返回的是正确的电子邮件、cityUserId、tokenInfo.accessToken,但它返回的是“城市用户”的“nil”。我该怎么办?这是声明所有内容都是可选的最大缺点。你得到了
nil
,但你不知道,为什么也许这就是你要找的,如果我想通过codables解析,我用它来解析。当然,您也可以自己编写和编辑上述工具提供的模型。推荐的解决方案是后者:更改CodingKey
s值以匹配属性,而不是相反。(请记住,您还必须提供其他编码键以匹配其余属性。)@Itaferber我知道,我只想指出大写/小写不匹配。我更新了答案。@vadian在CodingKey
中需要带什么CityUser
。你能告诉我吗?或者在哪种情况下,我们必须在CodingKey
中使用实体,如果您指定CodingKey
,例如,要将一个键映射到另一个命名属性,您必须添加所有其他要进行en-/decoded的键。@abecardiopoint是的,它是。