I'm trying to fetch some json data as follows:
[
{
"_id": "5ccbf88042b2f60ec690a8dd",
"title": "Conference1",
"description": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa.",
"cities": [
{
"name": "Paris",
"numberOfUsers": "3"
},
{
"name": "Marseille",
"numberOfUsers": "7"
},
{
"name": "Lyon",
"numberOfUsers": "2"
}
]
}
{
"_id": "5ccbf88042b2f60ec690a8dd",
"title": "Conference1",
"description": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa.",
"cities": [
{
"name": "Paris",
"numberOfUsers": "5"
},
{
"name": "Marseille",
"numberOfUsers": "10"
},
{
"name": "Lyon",
"numberOfUsers": "8"
}
]
}
]
Here is my code :
class Event: NSObject{
var title: String? = ""
var eventDescription: String? = ""
var cities: [String:String]? = ["":""]
var name: String? = ""
var numberOfUsers: String? = ""
static func parseEventData(data: Data) -> [Event] {
var eventsArray = [Event]()
do {
let jsonResult = try JSONSerialization.jsonObject(with: data, options: .mutableContainers)
//Parse JSON Data
if let events = jsonResult as? [Dictionary<String,AnyObject>] {
for event in events {
let newEvent = Event()
newEvent.title = event["title"] as? String
newEvent.eventDescription = event["description"] as? String
newEvent.cities = event["cities"] as? [String:String]
for city in newEvent.cities? {
newEvent.name = city["name"] as? String
newEvent.numberOfUsers = city["numberOfUsers"] as? String
}
eventsArray.append(newEvent)
}
}
}catch let err {
print(err)
}
return eventsArray
}
}
Code compiles well for title, and description but I'm stuck to catch cities correctly. Any help would be appreciated. Thank you
Decodable,JSONDecoder, and proper structures.