gpt4 book ai didi

swift - 使用 JsonDecoder 和 Alamofire 解码 Json 数据

转载 作者:搜寻专家 更新时间:2023-11-01 06:00:42 25 4
gpt4 key购买 nike

我正在尝试将 Json 数据解码到我的模型中。这是我的模型

struct Devices : Codable {
var id :String?
var description :String?
var status : Int?

 var heroes = Devices()
print(DeviceId)
let loginParam: [String: Any] = [
"id": DeviceId
]
let manager = Alamofire.SessionManager.default
manager.session.configuration.timeoutIntervalForRequest = 5
manager.request("http://13.13.13.004/website/api/Customer/DeviceControl", method: .post , parameters: loginParam, encoding: JSONEncoding.prettyPrinted)
.responseData { response in
let json = response.data

do{
let decoder = JSONDecoder()
//using the array to put values
heroes = try decoder.decode(Devices.self, from: json!)

}catch let err{
print(err)
}

此代码未进入 catch block 。但是英雄值返回零。当我尝试使用 NsDictionary它给出了结果。

最佳答案

这是一个常见的错误:你忘记了根对象

struct Root : Decodable {

private enum CodingKeys: String, CodingKey { case resultCount, devices = "results" }

let resultCount : Int
let devices : [Device]
}

并以单数形式命名设备结构(devicesDevice 实例的数组)并将成员声明为非可选

struct Device : Decodable {
var id : String
var description : String
var status : Int
}

...

var heroes = [Device]()

...

let result = try decoder.decode(Root.self, from: json!)
heroes = result.devices

关于swift - 使用 JsonDecoder 和 Alamofire 解码 Json 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52110124/

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