Я играю с API-интерфейсом TFL в быстром, в частности, с API-интерфейсом состояния линии, но у меня возникают проблемы с декодированием statusSeverityDescription
внутри вложенного объекта lineStatuses
. В идеале я хотел бы получить name
строки и statusSeverityDescription
вместе.
Я могу правильно декодировать name
строки из JSON, поэтому я уверен, что проблема заключается только в ошибке декодирования массива.
вот URL для рассматриваемого API: https://api.tfl.gov.uk/line/mode/tube/status?detail=true
struct Line : Decodable {
let name : String
let lineStatuses : Status
}
struct Status : Decodable {
let statusSeverityDescription : String
private enum CodingKeys : String, CodingKey {
case statusSeverityDescription = "statusSeverityDescription"
}
init(from decoder : Decoder) throws {
if let container = try? decoder.container(keyedBy: CodingKeys.self) {
self.statusSeverityDescription = try! container.decode(String.self, forKey: .statusSeverityDescription)
} else {
let context = DecodingError.Context.init(codingPath: decoder.codingPath, debugDescription: "Unable to decode statuses!")
throw DecodingError.dataCorrupted(context)
}
}
//this is in the UrlSession function
if let journey = try? JSONDecoder().decode([Line].self, from: data)
print(journey)