gpt4 book ai didi

json - 如果解码器失败使用其他解码器

转载 作者:行者123 更新时间:2023-11-30 10:44:48 25 4
gpt4 key购买 nike

我正在创建一个使用 Laravel 作为后端与 Web 应用程序进行通信的应用程序。我正在尝试处理表单验证但遇到问题。

例如,假设用户登录时。

我正在尝试使用 URLRequest 登录。

let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
guard let data = data, error == nil else {return}
}
task.resume()

我创建了两个结构

struct LoginRequest: Decodable {
let access_token: String
}

还有

struct LoginErrors: Decodable {
let error: String
let message: String
}

现在我用这个解码 json 响应

do {
let login = try JSONDecoder().decode(LoginRequest.self, from: data!)
} catch {
// error
}

当 LoginRequest 失败时,如何尝试解码 LoginErrors 结构?如果这是不好的做法,那么解析有错误的 json 的最佳方法是什么?

这是我需要处理的 json 示例。

{
"token_type": "Bearer",
"expires_in": 12345678,
"access_token": "abc123",
"refresh_token": "abc123"
}
// Error JSON
{
"error": "invalid_credentials",
"message": "The user credentials were incorrect."
}

最佳答案

你可以试试

do {
let login = try JSONDecoder().decode(LoginRequest.self, from: data!)
} catch {
let error = try? JSONDecoder().decode(LoginErrors.self, from: data!)
}

尽管这不是最佳实践,但您需要从服务器处理该问题以更改返回的状态代码并采取相应措施

关于json - 如果解码器失败使用其他解码器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55962016/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com