Parsing JSON data in into swift objects have become super easy with Swift 4 JSONDecoder.Given below is a simple example which hits a Api and parses the JSON data directly to student object.We are assuming that we have a JSON response which has same keys as names of properties.
import UIKit struct Student:Decodable{// property name should be same as json key name let name:String? let roll:Int? } class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let urlString = "http//:www.yoururlnotmine.com/test/blah/blah" guard let url = URL.init(string: urlString) else { return } URLSession.shared.dataTask(with: url) { (data, responce, error) in guard let data = data else{return} do{ let student = try JSONDecoder().decode(Student.self, from: data) //mapped name to student.name //mapped roll to student.roll print(student.name ?? "no name") } catch{ //error handling } } } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }
In order to pull it off successfully ,there are few points to be noted
- Class should conform to Decodable protocol
- Class properties should have same name as JSON keys so that they can be mapped.
- Class should have the same structure as JSON
- Properties which can be absent in JSON should be marked optional using “?” else it will cause run time error.
Parsing Complex JSON Structures
continued on next page
Pages: 1 2