如何创建 api 响应对象类型

安妮123

我正在做一个 api 调用并得到回复。

假设,响应是这样的

{
 data: {
 name: 'Varun', 
 id: 'szjsns3d', 
 email: '[email protected]'
 }
}

这是我的快速代码

guard let httpResponse = response as? HTTPURLResponse, httpResponse.statusCode == 200, let createMeetingData = data else {
                return
}

do{
                let createMeetingResponse = try JSONSerialization.jsonObject(with: createMeetingData, options: []) as? [String : AnyObject]

我想通过这样做[String : AnyObject],我将能够做这样的事情

print(createMeetingResponse.data.id);

但这会引发错误

'[String : AnyObject] 类型的值?没有成员“数据”

然后我考虑为它创建一个类型(来自打字稿背景),但我找不到这样做的方法。

我能够使用可编码的 api 请求参与的答案。(使用 codeable 进行编码和解码)。

有人可以帮我弄清楚如何在不使用可编码的情况下实现这一目标吗?

更新

我尝试使用可解码但它一直给我错误

类型“CreateMeetingResponse”不符合协议“Decodable”

这就是我制作可解码的方式

struct  MeetingResponse {
    let id: String
    let name: String
    let email: String

}

struct CreateMeetingResponse:Decodable {
    let data:MeetingResponse
}
什_汗

你需要

if let res = createMeetingResponse["data"] as? [String:Any] {
     if let id = res["id"] as? String {
         print(id)
     }
}

但最好使用 Codable

do {
    let res = try JSONDecoder().decode(Root.self, from: createMeetingData)
    print(res.data.id)
}
catch {
    print(error)
}

struct Root: Codable {
    let data: DataClass
}


struct DataClass: Codable {
    let name, id, email: String
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章