JSON Parse - Swift

Hüseyin Bagana
Swift Türkiye
Published in
2 min readJul 27, 2017
Source

Bu yazıda Decodable protocol’ü sayesinde Swift 4 ile JSON Parse konusundan bahsedeceğim.

JSON and Project Navigator

Yukarıda JSON dosyası eklenmiş bir single view app örneği bulunmakta. İlgili JSON içeriği :


{
“id”: 1,
“firstName”: “Hüseyin”,
“lastName”: “Bagana”,
“profile”: “https://medium.com/@huseyinbagana"
}

Öncelikle Swift 4' ten önce biz bu JSON’ı nasıl parse ediyorduk onu inceleyelim.

struct Author {
var id : Int?
var firstName : String?
var lastName : String?
var profile : String?
}

Modelimizi struct olarak controller üzerinde oluşturduk ve JSON da karşılık gelecek alanları ekledik.Ardından modelimize [String:Any] tipinde JSON parametresi alan bir constructor tanımlıyoruz.

struct Author {
var id : Int?
var firstName : String?
var lastName : String?
var profile : String?

init(json:[String:Any]){
id = json["id"] as? Int
firstName = json["firstName"] as? String
lastName = json["lastName"] as? String
profile = json["profile"] as? String
}
}

Modelimizin tanımlamaları bittiğine göre artık JSON’ınımızı bundle dan alıp parse etme zamanı geldi.

Output olarak json dosyamızdaki firstName’i aldık.

Şimdide JSON’ı biraz değiştirerek inceleyelim.

Bu JSON için herhangi bir init metodu oluşturmadan Decodable protocolününden inherit ediyoruz.

struct Story : Decodable{
var title : String?
var link : String?
var author : Author?
}
struct Author : Decodable{
var id : Int?
var firstName : String?
var lastName : String?
var profile : String?
}

Ardından aşağıdaki tek bir satır ile JSON’ımızı parse ediyoruz.

let stories = try JSONDecoder().decode([Story].self, from: jsonData)

Sonuç olarak iseyine ekranda ilk Story’ i yazan yazarın ismi yazdı.

Swift 4 ile gelen Decodable sayesinde dictonary maplemekten kurtulduk diyebiliriz artık.

Bir Sonraki Yazıda Görüşmek Üzere ✋

--

--