Swift-Decodable无法使用可选值解码

问题描述 投票:0回答:1

我正在尝试向后端提出一个简单的登录请求。仅当登录成功时,后端才会返回由状态码,每次字符串消息和访问令牌组成的JSON对象。为此,我创建了以下struct

struct AuthResponse: Decodable {
    enum CodingKeys: String, CodingKey {
        case code, message
        case accessToken = "access_token"
    }

    let code: Int, message: String, accessToken: String?
}

[如果登录失败,并且服务器未发送访问令牌,则AuthResponse对象设法正确解码,并为nil属性设置为accessToken,正如我期望的那样。例如,对于以下响应,解码成功:

代码= 400;message =“用户未注册”;

但是对于带有访问令牌的响应,像这样:

“ access_token” = TheAccessToken;代码= 200;消息=“成功登录”;

AuthResponse对象不会失败。

为什么会这样?这与accessToken属性是可选属性有关吗?我也尝试覆盖解码初始化程序并实现decodeIfPresent(_:forKey:)并展开属性,但两者似乎都没有帮助。预先感谢。

json swift decode codable
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.