Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- func getJSON(completionHandler: @escaping (Bool) -> ()) {
- let jsonUrlString = "https://api.nytimes.com/svc/topstories/v1/business.json?api-key=f4bf2ee721031a344b84b0449cfdb589:1:73741808"
- guard let url = URL(string: jsonUrlString) else {return}
- URLSession.shared.dataTask(with: url) { (data, response, err) in
- guard let data = data, err == nil else {
- print(err!)
- return
- }
- do {
- let response = try
- JSONDecoder().decode(TopStoriesResponse.self, from: data)
- // Pass results into arrays (title, abstract, url, image)
- for result in response.results {
- let headlines = result.title
- let abstracts = result.abstract
- let url = result.url
- self.headlines.append(headlines)
- self.abstracts.append(abstracts)
- self.urls.append(url)
- }
- let imageResponse = try
- JSONDecoder().decode(Story.self, from: data)
- for imageResults in imageResponse.multimedia {
- let images = imageResults.url
- self.images.append(images)
- }
- completionHandler(true)
- } catch let jsonErr {
- print("Error serializing JSON", jsonErr)
- }
- }.resume()
- }
- struct TopStoriesResponse: Decodable {
- let status: String
- let results: [Story]
- }
- struct Story: Decodable {
- let title: String
- let abstract: String
- let url: String
- let multimedia: [Multimedia]
- }
- struct Multimedia: Codable {
- let url: String
- let type: String
- }
- var headlines = [String]()
- var abstracts = [String]()
- var urls = [String]()
- var images = [String]()
- getJSON { (true) in
- print("Success")
- print("nnHeadlines: (self.headlines)nnAbstracts: (self.abstracts)nnURLS: (self.urls)nnImages: (self.images)")
- }
- let imageResponse = try
- JSONDecoder().decode(Story.self, from: data)
- for imageResults in imageResponse.multimedia {
- let images = imageResults.url
- self.images.append(images)
- }
- multimedia: ""
Add Comment
Please, Sign In to add comment