Вот JSON, который я пытаюсь проанализировать из API Strava:
{
"firstname": "Evan",
"lastname": "Arthur",
"city": "",
"state": "",
"country": "",
"sex": "M",
"measurement_preference": "feet",
"ftp": 285,
"bikes": [
{
"id": "b4770368",
"primary": true,
"name": "Felt Disc",
"resource_state": 2,
"distance": 2528687
}
]
}
Я пытаюсь получить доступ к некоторым записям и создать из них объект.Вот мой класс Athlete:
import Foundation
struct athlete: Codable{
let firstName: String
let lastName: String
let sex: String
let measurement: String
enum CodingKeys: String, CodingKey {
case firstName = "firstname"
case lastName = "lastname"
case sex = "sex"
case measurement = "measurement_preference"
case bikes = "bikes"
}
struct Bike: Codable {
let name: String
let distance: String
// enum CodingKeys: String, CodingKey{
// case name = "name"
// case distance = "distance"
// }
}
let bikes: [Bike]
init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
self.firstName = try container.decode(String.self, forKey: .firstName)
self.lastName = try container.decode(String.self, forKey: .lastName)
self.sex = try container.decode(String.self, forKey: .sex)
self.measurement = try container.decode(String.self, forKey: .measurement)
self.bikes = try container.decode([Bike].self, forKey: .bikes)
}
}
Я пытаюсь проанализировать его с помощью этого кода:
let decoder = JSONDecoder()
let definition = try? decoder.decode(athlete.self, from: jsonData)
Я знаю, что я правильно получаю API и могу получить доступ к анализу всех полей, прежде чем"велосипеды", но я не могу получить доступ к велосипедам.С этим кодом происходит сбой decoder.decode ().Как правильно получить доступ к массиву и декодировать его?