Предполагая, что вы пропустили {
и }
, которые будут окружать этот блок и необходимы для того, чтобы этот код был действительным JSON, ниже приведено простейшее решение для анализа объектов, вам действительно не нужно иметь дело сCodingKey
вообще, поскольку ваши имена соответствуют ключам в JSON, поэтому синтезированный CodingKey
будет работать просто отлично:
public struct Schedule: Codable {
public let periods : [String:[Inner]]
}
public struct Inner: Codable {
public let firstName: String
public let lastName: String
}
let schedule = try? JSONDecoder().decode(Schedule.self, from: json)
print(schedule?.periods.keys)
print(schedule?.periods["2018-06-07"]?[0].lastName)
Ключ в том, что внешний JSON является объектом JSON (словарь / карта) с одним ключом periods
Значением этого ключа является другая карта массивов.Просто разбейте его так, и все автоматически выпадет.