我正在尝试在我的应用程序中使用新的Codable协议,但我无法从JSON到我的对象进行对话。我在这里:
struct LoginCodableEntity: Codable {
let authToken: String? = ""
let status: String? = ""
let errorMessage: String? = ""
let errorCode: Int?
private enum CodingKeys: String, CodingKey {
case status
case errorMessage = "message"
case authToken = "auth_token"
case errorCode = "code"
}
}
Alamofire.request(API.login).responseJSON { (response) in
do {
let decoder = JSONDecoder()
let json = try decoder.decode(LoginCodableEntity.self, from: response.data!)
print("JSON: \(json)")
} catch let err {
print("Err", err)
}
}
我的API响应数据,json var得到对象强制转换,但其中的字段为空:
JSON: LoginCodableEntity(authToken: Optional(""), status: Optional(""), errorMessage: Optional(""), errorCode: Optional(800))
我基于this tutorial制作了这个示例,但这个实现似乎有些不对劲 返回的JSON如下所示:
JSON: Optional({
code = 910;
message = "Credentials denied";
status = error;
})
答案 0 :(得分:4)
您必须从常量中删除默认值:
let authToken: String?
let status: String?
let errorMessage: String?
let errorCode: Int?
不能重新分配常量。一旦给它们一个默认值,就不能在解析过程中再次分配它们。