我已经在Swift中为用户对象定义了自定义数据模型,如下所示: user data model
我有一个从API提取用户数据的函数,如下所示: get data from api
以下是使用Postman调用同一终结点时的响应: api response
这是函数第75行的控制台调试输出,表明我实际上正在接收该数据:debug output
据我所知,一切看起来都不错。 然后,我使用JSONDecoder()。decode解码从api接收到的jsonData,对此我没有任何错误。但是,当我从返回的用户对象中打印一个字段时,该字段(以及所有其他字段)均为“ nil”:all fields in user object are nil
我确定这是个小而愚蠢的东西,但是我已经花了几个小时,无法弄清楚它是什么。谁能发现错误,让我知道我在做什么错?
帮助非常感谢!
答案 0 :(得分:1)
对于 Codable ,您需要为json键赋予相同的属性名称。并确保它在正确的范围内。例如,您通过电子邮件发送detailresponse json对象内部的属性和detailresponse主json对象内部的属性。如果您不想再增加任何类,则需要使用它的 init 容器方法。
class Response: Codable {
var statuscode: Int?
var response_type: Int?
// Other properties
var detailresponse: DetailResponse?
}
class DetailResponse: Codable {
var id: Int?
// Other properties
var socialmediadata: User?
}
class User: Codable {
var id: Int?
var email: String?
// Other properties
}
现在,json将像这样进行解析。
let response = try JSONDecoder().decode(Response.self, from: jsonData)
print(response.detailresponse?.socialmediadata?.email ?? "")