Ios 使用Alamofire和decode获取JSON-Swift 4
我有一个API,我还想获得请求。Ios 使用Alamofire和decode获取JSON-Swift 4,ios,json,swift,alamofire,decode,Ios,Json,Swift,Alamofire,Decode,我有一个API,我还想获得请求。 但我尝试使用JSONDecoder转换数据类型,但失败了。 我不知道如何像下面的数据一样解码这个Json。 我想获取设置我的用户结构的json[“response”]内容。 你有什么建议吗? 谢谢 错误域=NSCOCAERRORDOMAIN Code=4865“没有与密钥id(“id”)关联的值。”用户信息={NSCodingPath=( ),NSDebugDescription=没有与密钥id(“id”)关联的值。} 这是JSON数据: { "status":
但我尝试使用JSONDecoder转换数据类型,但失败了。
我不知道如何像下面的数据一样解码这个Json。
我想获取设置我的用户结构的json[“response”]内容。
你有什么建议吗? 谢谢 错误域=NSCOCAERRORDOMAIN Code=4865“没有与密钥id(“id”)关联的值。”用户信息={NSCodingPath=( ),NSDebugDescription=没有与密钥id(“id”)关联的值。} 这是JSON数据:
{
"status": "success",
"response": {
"id": "1130f1e48b608f79c5f350dd",
"name": "Jack",
},
"errors": ""
}
用法:
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)
}
键
id
不在您期望的级别上。这就是错误消息的状态。键
id
和name
位于键response
的(子)字典中
所以你需要一个伞形结构
struct Root : Decodable {
let status: String
let response: User
}
struct User: Decodable {
let id: String
let name: String
}
然后解码
let root = try JSONDecoder().decode(Root.self, from: data)
let user = root.response
错误说明您做错了什么,请阅读iTunes并使用此库创建您的JSON和解析类的模型。但我用的是Swift 4
let root = try JSONDecoder().decode(Root.self, from: data)
let user = root.response