Ios 使用Alamofire和decode获取JSON-Swift 4

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":

我有一个API,我还想获得请求。
但我尝试使用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