【发布时间】:2023-04-02 09:42:01
【问题描述】:
我有一个 API,我也想获得请求。
但我尝试使用 JSONDecoder 转换数据类型,但失败了。
我不知道如何像下面的数据一样解码这个 Json。
我想采用 json["response"] 内容设置我的用户结构。
对我有什么建议吗?
谢谢。
错误域 = NSCocoaErrorDomain 代码 = 4865 “没有与键 ID (“id”) 关联的值。”用户信息={NSCodingPath=( ), NSDebugDescription=没有与键 id ("id") 关联的值。}
这是 JSON 数据:
{
"status": "success",
"response": {
"id": "1130f1e48b608f79c5f350dd",
"name": "Jack",
},
"errors": ""
}
enum RestfulAPI:String {
case userInfo = "http://www.mocky.io/v2/5a796fb92e00002a009a5a49"
func get(parameters:[String : Any]? = nil,success:@escaping (_ response : Data)->(), failure : @escaping (_ error : Error)->()){
let url = self.rawValue
Alamofire.request(url, method: .get, parameters: parameters, encoding: JSONEncoding.default, headers: nil).responseJSON { (response) in
switch response.result {
case .success:
if let data = response.data {
success(data)
}
case .failure(let error):
failure(error)
}
}
}
}
struct User: Decodable {
let id: String
let name: String
}
用法:
RestfulAPI.userInfo.get(success: { data in
do {
let user = try JSONDecoder().decode(User.self, from: data)
print("==) ", user.id, user.name)
}catch let error as NSError{
print(error)
}
}) { (error) in
print(error)
}
【问题讨论】:
-
错误说明你做错了什么,请阅读
-
使用这个库来创建你的 JSON 模型类并进行解析。 github.com/insanoid/SwiftyJSONAccelerator
-
但我使用的是 Swift 4
标签: ios json swift alamofire decode