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
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
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.