我正在swift中进行API调用,API的响应看起来像这样:
[
{
"response": {
"data": {
"first": "Hello",
"second": "Hola",
"third": "Namaste"
}
}
}
]
现在,为了能够将其集成到我的应用程序中,我需要解码来自API调用的响应,我使用的类型如下:
struct APIResponse: Codable {
let response: Response
}
struct Response: Codable {
let data: Data
}
struct Data: Codable {
let first: String
let second: String
let third: String
}
现在的问题是这种类型是错误的,因为API响应实际上是一个只有一个元素(索引0)的数组,这意味着如果来自API的响应是
,上述类型将工作[
"response": {
"data": {
"first": "Hello",
"second": "Hola",
"third": "Namaste"
}
}
]
如何定义索引0数据在我的类型?
我用来进行API调用和解码JSON的代码:
var request = URLRequest(url: URL(string: "https://myurl.com")!)
let (data, _) = try await URLSession.shared.data(for: request)
let decodedResponse = try? JSONDecoder().decode(APIResponse.self, from: data)
您的响应是一个元素数组:
let decodedResponse = try JSONDecoder().decode([APIResponse].self, from: data)
:
let element = decodedResponse.first
应该能让你走起来。
永远不要使用try?
,它会混淆所有错误。