I am trying to convert JSON data into an array but I do not really have any idea how to do it.
I get the data and save it in strings and I can also show it on display.
struct User_Hosting: Codable {
let company_name: String
let website: String
let street: String
let housenumber: String
let zip: String
let city: String
enum CodingKeys: String, CodingKey {
case company_name = "company_name"
case website = "website"
case street = "street"
case housenumber = "housenumber"
case zip = "zip"
case city = "city"
}
}
And here some other codes:
let url = URL(string: "myURL.com")
URLSession.shared.dataTask(with: url!, completionHandler: { [weak self] (data, response, error) in
guard let data = data, error == nil else {
print(error?.localizedDescription ?? "An error occurred")
return
}
DispatchQueue.main.async {
self?.dataSource = try! JSONDecoder().decode([User_Hosting].self, from: data)
}
}).resume()
}
CodingKeyswhen struct's property names and property names from server are identicalJSON responsethat you're getting from API.dataSourceproperty inself?.dataSource = try! JSONDecoder().decode([User_Hosting].self, from: data)?let decoder = JSONDecoder() decoder.decordingStrategy = .convertFromSnakeCaseand then uselet company_name as let companyName.try!, use a properdo {...} catch { print(error) }so you don’t miss any errors that might happen during decoding. The answer to your question might very well be in that print statement. And do the decoding beforeDispatchQueue.main.async