Я пытаюсь проанализировать JSON
данные расписания по дням недели, и каждый день недели содержит массив различных событий / расписаний, которые повторяют каждое слабое.Итак, у меня есть массив данных, который содержит объекты дня недели с понедельника по воскресенье, а день недели имеет массив событий / расписаний.
struct Scheduledata: Decodable {
let data: [WeekDay]
}
struct WeekDay: Decodable {
let monday, tuesday, wednesday, thursday, friday, saturday, sunday : [Schedule]?
}
struct Schedule: Decodable {
let id: Int?
let start: String?
let end: String?
let address: String?
let name: String?
let text: String?
let imageURL: String?
let location: CLLocationCoordinate2D?
enum CodingKeys: String, CodingKey {
case text, location, start, end, name, address, id
case imageURL = "image_url"
}
init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
id = try container.decodeIfPresent(Int.self, forKey: .id)
text = try container.decodeIfPresent(String.self, forKey: .text)
imageURL = try container.decodeIfPresent(String.self, forKey: .imageURL)
location = try container.decodeIfPresent(CLLocationCoordinate2D.self, forKey: .location)
start = try container.decodeIfPresent(String.self, forKey: .start)
end = try container.decodeIfPresent(String.self, forKey: .end)
address = try container.decodeIfPresent(String.self, forKey: .address)
name = try container.decodeIfPresent(String.self, forKey: .name)
}
}
extension CLLocationCoordinate2D: Codable {
public init(from decoder: Decoder) throws {
var container = try decoder.unkeyedContainer()
self.init()
longitude = try container.decode(Double.self)
latitude = try container.decode(Double.self)
}
public func encode(to encoder: Encoder) throws {
var container = encoder.unkeyedContainer()
try container.encode(longitude)
try container.encode(latitude)
}
}
Это объект json, который я пытаюсь проанализировать
{
"data": [
{
"monday": []
},
{
"tuesday": [
{
"id": 1,
"day_id": 2,
"start": "16:30",
"end": "21:00",
"name": "Test Event",
"address": "6 mohamed galal street cairo, heliopolis",
"lat": "30.0866280",
"long": "31.3236130",
"image": "http:\/\/80.211.174.200\/img\/event\/1542547661.jpeg",
"title": "Test_Event",
"description": "This is just a test event to test the testable testi test test testit test............................. yes this is a test indeed",
"created_at": "2018-11-18 15:27:41",
"updated_at": "2018-11-18 15:27:41"
}
]
},
{
"wednesday": []
},
{
"thursday": []
},
{
"friday": []
},
{
"saturday": []
},
{
"sunday": []
}
]
}
То, что я ожидаю, это словарь:
var schedule = ["monday":[schedule], "tuesday":[schedule], ...]
То, что я получаю, похоже на массив словарей.У меня есть только один день в каждом объекте недели, а не все дни недели.
var schedule = [["monday":[schedule], "tuesday":[schedule], ...],["monday":[schedule], "tuesday":[schedule], ...]]
Так как я могу это сделать?Я создаю различную структуру для каждого дня вместо структуры дня недели?Не похоже на логику.Что-то не совсем правильно.Я уверен, что есть более разумное решение для этого.