如何创建api响应对象类型



我正在做一个api调用并得到一个响应。

假设响应是这样的

{
data: {
name: 'Varun', 
id: 'szjsns3d', 
email: 'varun.bindal@gmail.com'
}
}

这是我的swift代码

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]的值?'没有'data'成员

然后我想为它创建一个类型(来自typescript背景),但我找不到一个方法来做它。

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

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

更新我尝试使用可解码的,但它一直给我错误

类型'CreateMeetingResponse'不符合协议'可解码'

这就是我如何创建可解码的

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
}