Decodable pada Parsing JSON di Swift 4 (IOS)


Pagi yang cerah 😁
Setelah sebelumnya kita telah mempelajari cara memanfaatkan encodable pada swift 4 ( klik disini ). Pada hari ini kita akan mencoba mempelajari tentang Decodable, kelebihan dan kekurangannya dalam pemanfaatan di swift 4. Decodable biasanya digunakan untuk parsing data JSON.

keunggulan dari Decodable dari pada menggunakan model biasa adalah pada Decodable kita tidak perlu lagi mendeklarasikan satu per satu variabel kedalam data model.

misalkan kita memiliki data JSON seperti berikut :

"identitas" : {
  "nama": "anton samba",
   "nomortelepon":082331012121,
   "alamat":"Jalan merpati, kota Malang",
}

Mengunakan cara biasa :

struct parsingStandart{
    var nama: String
    var nomortelepon : Int
    var alamat : String
}

let newData = parsingStandart(nama: JSON["identitas"]["nama"].stringValue , nomortelepon : JSON["identitas"]["nomortelepon"].intValue,  alamat: JSON["identitas"]["alamat"].stringValue)

Menggunakan cara Decodable :

struct parsingStandart: Decodable {
    var nama: String
    var nomortelepon : Int
    var alamat : String
}

let convertjson = "\(identitas)"
let newmodel = convertjson.data(using: .utf8)!
let savetomodeldata = try JSONDecoder().decode(parsingStandart.self, from: newmodel)

Keuntungan yang kedua memudahkan kita dalam proses pergantian variabel pada sisi backend, dan kita juga dapat mengganti variabel pada model data kita sesuka kita dengan menggunakan CodingKey :

struct parsingStandart: Decodable {
    var namapenduduk: String
    var nomorteleponpenduduk: Int
    var alamatpenduduk : String

    enum parsingStandart: String, CodingKey{
            this.namapenduduk = "nama"
            this.nomorteleponpenduduk = "nomortelepon"
            this.alamatpenduduk = "alamat"
    }
}

Keuntungan lain dari penggunaan Decodable adalah proses pemetaan data array yang menjadikan clean code dan mudah sekali diterapkan, seperti contoh berikut :

"identitas" : [{
  "nama": "anton samba",
   "nomortelepon":082331012121,
   "alamat":"Jalan merpati, kota Malang",
},
{
  "nama": "Maman "
   "nomortelepon":082334321321,
   "alamat":"Jalan garuda, kota Malang",
},
{
  "nama": "anton samba"
   "nomortelepon":084321232121
   "alamat":"Jalan cenderawasih, kota Malang"
}]

let convertjson = "\(identitas)"
let newmodel = convertjson.data(using: .utf8)!
let savetomodeldata = try JSONDecoder().decode([parsingStandart].self, from: newmodel)

Kelemahan dari Decodable adalah saat kita membutuhkan data di luar dari json object yang kita pilih maka kita harus mengambil semua data json utuhnya, seperti berikut :

"data": {
         "identitas": {
             "nama": "anton samba",
             "nomortelepon":082331012121,            

             "alamat":"Jalan merpati, kota Malang"
          },

         "pendidikan":{
             "tahunlulus" : "2001",

             "tempatlulus" : "Universitas Harvard"
         }
}

Dari model data diatas jika kita ingin mengambil data tahun saja yang ingin kita tambahkan ke data model Decodable kita. kita tidak bisa menggunakan dengan hanya mengambil satu parameter saja tapi kita harus menulis kan semuanya.

struct parsingIdentitas: Decodable{
    let nama: String
    let nomortelepon : Int
    let alamat : String
}


struct parsingLulusan: Decodable{
    let
tahunlulus: String
    let
tempatlulus : String
}


struct data: Decodable{
   var indentitas : parsingIdentitas
   var lulusan : parsingLulusan




** Seperti inilah penerapan model Decodable secara sederhana, Semoga bermanfaat 😊

Decodable pada Parsing JSON di Swift 4 (IOS) Decodable pada  Parsing JSON di Swift 4 (IOS) Reviewed by sdiik on February 28, 2020 Rating: 5

No comments:

Powered by Blogger.