JSON
Kali ini saya akan menjelaskan tentang implementasi parsing JSON dalam Android. Apa itu
JSON ?
JSON (Javascript Object Notation) merupakan format pertukaran data yang ringan, mudah
dibaca dan ditulis oleh manusia.
Mungkin untuk lebih jelasnya, bisa dilihat di link berikut :
JSON - Wikipedia bahasa Indonesia, ensiklopedia bebas
JSON (dilafalkan "Jason"), singkatan dari JavaScript Object Notation ( bahasa Indonesia:
notasi objek JavaScript)…
[Link]
Terus, untuk apa JSON ini dalam pengembangan aplikasi Android ?
Nah, begini,,
Dalam aplikasi Android, terkadang kita memerlukan suatu data yang berasal dari suatu server
untuk digunakan dan ditampilkan dalam aplikasi kita. Nah, untuk mengambil data dari server
kita bisa memakai yang namanya API (Application Programming Interface). Bagi yang
belum tahu apa itu API bisa di baca dibawah ini :
API (Application Program Interface) Definition
The definition of API defined and explained in simple language.
[Link]
Dalam penyaluran data dari server ke client(aplikasi kita) memerlukan sebuah standar
pemformatan data, nah disinilah kita pakai JSON. Adapun salah contoh dari bentuk JSON
sebagai berikut :
{
"namaDepan": "Budi",
"namaBelakang": "Sbudi",
"alamat": {
"namaJalan": "Jl. Sudirman 15A",
"kota": "Jakarta Selatan",
"provinsi": "DKI Jakarta",
"kodePos": 11111
},
"nomerTelepon": [
"021 555-1234",
"021 555-4567"
]
}
Dalam tutorial kali ini kita memakai contoh JSON yang sangat sederhana, yang berisi contact
dimana setiap node nya berisi informasi seperti nama, alamat, email, gender, dan no hp. Dan
kali ini kita pakai library [Link] (sudah bawaan Java-nya) untuk membuat pemanggilan
HTTP dan mencocokkan JSON dari URL. Selain library bawaan(default) tersebut, ada juga
library third party — seperti Volley dan Retrofit — yang Insya Allaah nanti akan saya publish
di tutorial selanjutnya
Berikut JSON -nya, bisa juga anda akses ke alamat berikut
: [Link]
{
"contacts": [
{
"id": "c200",
"name": "Ravi Tamada",
"email": "ravi@[Link]",
"address": "xx-xx-xxxx,x - street, x - country",
"gender" : "male",
"phone": {
"mobile": "+91 0000000000",
"home": "00 000000",
"office": "00 000000"
}
},
{
"id": "c201",
"name": "Johnny Depp",
"email": "johnny_depp@[Link]",
"address": "xx-xx-xxxx,x - street, x - country",
"gender" : "male",
"phone": {
"mobile": "+91 0000000000",
"home": "00 000000",
"office": "00 000000"
}
},
.
.
.
.
]
}
Perbedaan JSONArray dan JSONObject
Dalam JSON, ada dua hal penting yang harus kita ketahui dan harus tahu membedakannya,
yaitu JSONArray dan JSONObject. JSONArray di dalam JSON di representasikan dengan
tanda [ (Square Brackets), sedangkan JSONObject di representasikan dengan tanda } (Curly
Brackets). Dalam implementasi kodingan java-nya, jika JSONArray kita gunakan
method getJSONArray(), kalau JSONObject kita gunakan method getJSONObject().
Gampang kan ?? Hehe.. :D :D
Let’s Practice
1. Buat Project Baru
1. Buatlah project baru, terserah namanya apa.
2. Kemudian kita tambahkan permission INTERNET di [Link],
karena aplikasi kita membutuhkan koneksi ke INTERNET untuk akses JSON.
3. Untuk menghandle koneksi dan mendapatkan json dari URL, kita buat Class dengan
[Link]
4. Kemudian kita tambahkan ListView dalam main view kita (activity_main.xml). Kodenya
seperti berikut :
5. Jangan lupa juga kita buat view untuk tiap list item di list view nya. Buat file layout dengan
nama list_item.xml denga kode berikut :
6. Setelah itu, buka [Link] dan kita deklarasikan dahulu variabel — variabel
untuk listview :
public class MainActivity extends AppCompatActivity {
private String TAG = [Link]();
private ProgressDialog pDialog;
private ListView lv;
// URL to get contacts JSON
private static String url = "[Link]
ArrayList<HashMap<String, String>> contactList;
@Override
protected void onCreate(Bundle savedInstanceState) {
[Link](savedInstanceState);
setContentView([Link].activity_main);
contactList = new ArrayList<>();
lv = (ListView) findViewById([Link]);
}
}
2. Men-Download & Mem-Parsing JSON
7. Disini kita pakai Async class untuk menghandle pemanggilan http (untuk mendapatkan
JSON-nya) di Background Thread. Ada 3 method penting dalam Async Class, yaitu :
Method onPreExecute() : Dipanggil sebelum eksekusi (sebelum pemanggilan HTTP).
Disinilah kita bisa inisialisasi Progress Dialog, karena method ini berjalan di Main Thread.
Method doInBackground() : Dipanggil saat pemanggilan HTTP, disinilah kita melakukan
proses untuk mendapatkan data dari JSON dan memparsing nya. Dalam kasus ini kita pakai
method yang sudah kita buat, yaitu makeServiceCall().
Method onPostExecute() : Diapnggil setelah eksekusi (setelah pemanggilan HTTP). Disini
kita hilangkan Progress Dialog dan menampilkan data ke dalam ListView kita dengan
menggunakan Adapter.
Berikut implementasi nya dalam [Link] :
8. Sampai disini aplikasi kita sudah selesai, jika tidak ada error maka tampilan aplikasi nya
sebagai berikut :