Mempelajari JSON di SWIFT 4

Tanpa perlu menjelaskan ulang apa itu JSON atau SWIFT langsung saja kita masuk ke tutorial tentang JSON di bahasa pemrograman yg digunakan untuk membuat aplikasi di iOS ini

Pertama, buat lah sebuah class Person


    struct Person: Codable {
        let name: String
        let age: Int
       
        func getString() -> String {
            return "Name: \(name), Age: \(age)"
        }
       
    }

Class diatas bisa didefinisikan sebagai berikut
        let person = Person(name: "Yuri", age: 20)

Kita bisa memanggil function getString untuk mendapatkan isi dari Class tersebut

        print("Original Person Struct: " + person.getString() + "\n")

Skrip diatas akan menampilkan pesan : Original Person Struct: Name: Yuri, Age: 20

Kemudian bagaimana merubahnya ke dalam bentuk JSON? Gunakan skrip di bawah ini

var json: Any?
let encodedData = try? JSONEncoder().encode(person)

        if let data = encodedData {
            json = try? JSONSerialization.jsonObject(with: data, options: .allowFragments)
            if let json = json {
                print("Person JSON:\n" + String(describing: json) + "\n")
               
            }
        }

Skrip diatas akan menampilkan : Person JSON: { age = 20; name = Yuri; }

Bagaimana cara merubahnya ke dalam bentuk string JSON? Ketik skrip dibawah ini

        var encodedData3 = try? JSONEncoder().encode(person)
        var json3 = String(data: encodedData3!, encoding: .utf8)!
        print("hasil print "+json3)

Skrip diatas akan menampilkan : hasil print {"name":"Yuri","age":20}

Membuat Array JSON

Contoh yg kita bahas diatas adalah contoh satu objek saja, bagaimana jika dalam bentuk array (lebih dari satu objek) ?

Gunakan skrip dibawah ini untuk menuliskan array

var familyMembers: [Person] = [Person]()

Lalu tambahkan skrip ini dibawahnya untuk memasukan variabel person ke dalam array familyMembers

familyMembers.append(person)

Bagaimana jika datanya lebih dari satu? Caranya sama, cukup gunakan append

Bagaimana cara menampilkannya ke dalam prinan? Gunakan skrip dibawah ini

        var json2: Any?

        let encodedData2a = try? JSONEncoder().encode(familyMembers)

        if let data2 = encodedData2a {
           
            json2 = try? JSONSerialization.jsonObject(with: data2, options: .allowFragments)
           
            if let json2 = json2 {
                print("Person JSON 2:\n" + String(describing: json2) + "\n")
                //Prints: Person JSON: { age = 20; name = Yuri; }
            }
           
        }

Skrip diatas akan menampilkan tulisan seperti ini

Person JSON 2:
(
        {
        age = 20;
        name = Yuri;
    }
)

Bagaimana caranya merubah ke dalam string JSON? Gunakan skrip dibawah ini

        var encodedData3 = try? JSONEncoder().encode(familyMembers)
        var json3 = String(data: encodedData3!, encoding: .utf8)!
        print("hasil print "+json3)

Skrip diatas akan menghasilkan : hasil print [{"name":"Yuri","age":20}]

Cara Merubah dari String ke JSON

Sebelumnya kita sudah belajar cara merubah JSON ke String, tetapi bagaimana cara sebaliknya?

Jika menggunakan tipe data any

Perhatikan pembuatan variabel json, tipe datanya Any bukan? Gunakan skrip dibawah ini jika tipe datanya adalah Any

var jsonDataWithNullsc = try? JSONSerialization.data(withJSONObject: json)
        let jsonDecoder3c = JSONDecoder()
        if let aaa=jsonDataWithNullsc{
        var rolesc: Person = try! jsonDecoder3c.decode(Person.self, from: aaa)
            print("Decoded people tipe Any: " + rolesc.getString())
        }

Skrip diatas akan menghasilkan : Decoded people tipe Any: Name: Yuri, Age: 20

Jika menggunakan tipe data String

Perhatikan pembuatan variabel json3 yang menggunakan tipe data string, Gunakan skrip dibawah ini jika tipe datanya adalah String


        let jsonDataWithNullsc = json3.data(using: .utf8)!
        let jsonDecoder3c = JSONDecoder()
            var rolesc: Person = try! jsonDecoder3c.decode(Person.self, from: jsonDataWithNullsc)
            print("Decoded people tipe String: " + rolesc.getString())

Skrip diatas akan menghasilkan : Decoded people tipe String: Name: Yuri, Age: 20

Bagaimana jika string jsonnya adalah string array? Gunakan skrip dibawah ini


        let jsonDataWithNulls = json3.data(using: .utf8)!
        let jsonDecoder3 = JSONDecoder()
        var roles: [Person] = try! jsonDecoder3.decode(Array.self, from: jsonDataWithNulls)
    

Skrip diatas akan menghasilkan variabel roles dengan tipe array yg berisi array class Person

Bagaimana teman-teman? Bikin puyeng kan :v segini dulu yah, kalau ada pertanyaan silahkan isi di kolom komentar

Terimakasih

Tidak ada komentar:

Catatan: Hanya anggota dari blog ini yang dapat mengirim komentar.

Diberdayakan oleh Blogger.