Hello, Good-day,
I'm looking for some advice on integrating with an API
The API returns this.
[
{
"id": "act.in",
"name": "Act In",
"date": "2023-04-27",
"timestamped": true,
"date_start": "2022-10-07",
"date_end": "2023-04-27"
},
{
"id": "act.del",
"name": "Act Del",
"date": "2023-04-27",
"timestamped": true,
"date_start": "2022-10-07",
"date_end": "2023-04-27"
}
]
I'm using Ducky to get the codable struct and I get this
struct Unknown: Codable {
let id: String
let name: String
let date: String
let timestamped: Bool
let dateStart: String
let dateEnd: String
private enum CodingKeys: String, CodingKey {
case id
case name
case date
case timestamped
case dateStart = "date_start"
case dateEnd = "date_end"
}
}
And I call the API like this
let urlAPIAppGAnalytics = "https://api.app/v1/projects/" + connectUser + "/" + connectSlug + "/collections"
guard let url = URL(string: urlAPIAppGAnalytics) else
{
print("Cannot connect")
return("40x")
}
var urlRequestAppGAnalyticsID = URLRequest(url: url)
let APIheadersAppGAnalyticsID = [
"accept": "application/json",
"Authorization": "Token " + connectToken
]
urlRequestAppGAnalyticsID.allHTTPHeaderFields = APIheadersCrawlRate
urlRequestAppGAnalyticsID.httpMethod = "GET"
urlRequestAppGAnalyticsID.timeoutInterval = mv.mobApiTimeout
urlRequestCrawlRange.cachePolicy = .useProtocolCachePolicy
let (dataAppGAnalyticsID, responseAppGAnalyticsID) = try await URLSession.shared.data(for: urlRequestAppGAnalyticsID)
guard (responseAppGAnalyticsID as? HTTPURLResponse)?.statusCode == 200
else {
print("Cannot connect")
return("40x")
}
let AppGID = try JSONDecoder().decode(APIAppGAnalyticsID.self, from: dataAppGAnalyticsID)
Everything compiles but my error checking returns
Type mismatch for type Dictionary<String, Any> in JSON: Expected to decode Dictionary<String, Any> but found an array instead.
Can anyone advise? Thank you!!