TUGAS
PEMROGRAMAN MOBILE 2
PERTEMUAN 3
Disusun Oleh Kelompok 1 dengan anggota :
Syamsul falah 16.11.0029
Muhammad Aris nur Aziz 16.11.0046
Linatun Masrohah 16.11.0055
ZaenurRochman 16.11.0068
Yahya Dani Lisharyanto 16.11.0070
Muhammad Ali Hasani 16.11.0071
Muhammad Yunus 16.11.0076
Sofyan Fathur Rohim 16.11.0082
Hamid Ashari 16.11.0086
Asep Tri Wibowo 16.11.0091
Firmansah Putra 16.11.0093
STMIK AMIKOM PURWOKERTO
2018
JSON Parsing
Pengertian JSON
JSON — singkatan untuk JavaScript Object Notation — adalah sebuah format
untuk berbagi data. Seperti dapat kita lihat dari namanya, JSON diturunkan dari
bahasa pemrograman javaScript, akan tetapi format ini tersedia bagi banyak bahasa
lain termasuk Python, Ruby, PHP, dan Java. JSON biasanya dilafalkan seperti nama
"Jason."
JSON menggunakan ekstensi .json saat ia berdiri sendiri. Saat didefinisikan di
dalam format file lain (seperti di dalam .html), ia dapat tampil didalam tanda petik
sebagai JSON string, atau ia dapat dimasukkan kedalam sebuah variabel. Format ini
sangat mudah untuk ditransfer antar server web dengan klien atau browser.
Karena sangat mudah dibaca dan ringan, JSON memberikan alternatif lebih baik
dari XML adn membutuhkan formatting yang tidak banyak. Panduan ini akan
membantu pembaca untuk memahami apa itu JSON, bagaimana menggunakan data di
file JSON, serta struktur dan sintaks dari format ini.
Sintaks dan Struktur
Sebuah objek JSON adalah format data key-value yang biasanya di render di
dalam kurung kurawal. Saat kita bekerja dengan JSON, kita akan sering melihat objek
JSON disimpan di dalam sebuah file .json, tapi mereka juga dapat disimpan sebagai
objek JSON atau string di dalam sebuah program.
Sebuah objek JSON terlihat seperti berikut ini:
Meskipun contoh di atas sangat singkat dan JSON dapat memiliki isi yang sangat
banyak, contoh di atas secara umum menggambarkan dua kurung kurawal { } di awal
dan di akhir dengan pasangan key-value diantara kedua tanda kurang. Sebagian besar
data yang dipakai di JSON dienkapsulasi di dalam sebuah objek JSON.
Pasangan key-value memiliki tanda titik dua diantara mereka "key" : "value".
Setiap key-value dipisahkan oleh sebuah koma, sehingga ditengah isi sebuah JSON
terlihat seperti in: "key" : "value", "key" : "value", "key": "value". Pada contoh di
atas, nilai pertama pasangan key-value kita adalah "idbuku" : "1".
Key JSON berada di sebelah kiri tanda titik dua. Mereka perlu dibungkus oleh
tanda petik dua seperti ini: "key", dan dapat berupa string apapun yang valid. Di
dalam setiap objek, key haruslah unik. Key ini dapat memiliki spasi seperti di "first
name", namun menambahkannya akan membuat kita lebih repot saat akan
mengaksesnya di proses ngoding sehingga disarankan untuk menggunakna underscore
seperti pada "first_name".
Value JSON ada di sebelah kanan tanda titik dua. Ada enam tipe data dasar yang
bisa dipakai untuk mengisinya yaitu:
Strings
Numbers
Objects
Arrays
Booleans (true atau false)
Null
Setiap tipe data yang dimasukkan sebagai valu ke dalam JSON akan mengingat
sintaksnya, jadi string akan diberikan tanpa petik, namun tidak dengan angka.
Metode Metode JSON Parser
HTTP Request
Http request adalah sebuah proses yang akan sering dilakukan apabila sedang
membuat sebuah app yang terhubung dengan server, alurnya adalah dari android
akses sebuah url dengan HttpURLConnection dan kemudian mengolah data stream
dari url tersebut, bentuknya biasanya berupa text baik itu berbentuk html maupun
json. Pada HTTP Request ada beberapa method yang dapat kita gunakan antara lain :
GET
Digunakan untuk meminta data tertentu dari server.
POST
POST digunakan untuk mengirimkan data masukan pengguna ke server. Pada
prakteknya, POST biasanya digunakan untuk mengambil data yang
dimasukkan dari form HTML. Data yang diisikan pada form biasanya
dikirimkan kepada server, dan server kemudian menentukan ke mana data
akan dikirimkan selanjutnya (misal: disimpan ke *database atau diproses
oleh aplikasi lain).
PUT
Method PUT menuliskan data pada server, sebagai kebalikan dari GET yang
membaca data dari server. Beberapa sistem publikasi atau manajemen konten
memungkinkan kita untuk membuat sebuah halaman web baru pada web
server dengan menggunakan PUT.
Cara kerja PUT sangat sederhana, yaitu server membaca isi Entity Body
dari request dan menggunakan isi tersebut untuk membuat halaman baru pada
URL yang diberikan request, atau jika URL telah ada maka isi data akan
ditimpakan.
DELETE
DELETE, seperti namanya, meminta server untuk menghapus data yang ada
pada server, sesuai dengan URL yang diberikan oleh client.
Begitupun, client tidak diberi jaminan bahwa penghapusan akan dijalankan
ketika menggunakan DELETE. Hal ini terjadi karena standar HTTP
memperbolehkan server untuk menolak atau mengabaikan
permintaan DELETE dari client.
HEAD
Method HEAD melakukan hal yang sama dengan GET, dengan perbedaan
utama yaitu pada HEAD server hanya akan mengembalikan Header HTTP
pada response saja. Tidak ada Entity Body yang dikembalikan oleh HEAD.
Hal ini akan memungkinkan client untuk melakukan cek atau
verifikasi header dari sebuah data tanpa harus mengambil data tersebut (yang
tentunya akan menghemat bandwidth). Dengan menggunakan HEAD kita
dapat:
1. Mengetahui informasi tentang data (tipe data, ukuran, dst) tanpa harus
mengambi data secara langsung.
2. Mengetahui apakah data ada atau tidak dengan melihat kode status yang
dikembalikan.
3. Melihat apakah data telah diubah, melalui pembacaan Header.
OPTIONS
OPTIONS bertanya kepada server untuk mengetahui kemampuan yang
dimiliki oleh server. Kita dapat meminta informasi methodyang didukung
oleh server untuk data (URL) tertentu. Hal ini dilakukan untuk
mengantisipasi beberapa server yang hanya memberikan dukungan terbatas
terhadap beberapa URL atau objek tertentu.
Dengan begitu, OPTIONS memberikan cara bagi aplikasi client untuk
menentukan cara terbaik mengakses berbagai data yang ada
dalam server tanpa harus selalu mengakses data secara langsung.
TRACE
Method TRACE memungkinkan client untuk melihat requestpaling akhir
yang diterima oleh server tujuan.
Sebuah request TRACE akan memulai perputaran diagnostik
pada server tujuan. Ketika menerima request TRACE, server tujuan akan
mengembalikan sebuah respon berisi request terakhir yang diterima oleh
server, sehingga client dapat melihat bagian mana dari request asli yang
dikirimkan yang mengalami perubahan ketika sampai di server.
REST(REpresentational State Transfer)adalah sebuah arsitektur software untuk sistem terdistribusi semisal web. REST
telah berkembang sebagai model desain web servis yang dominan saat ini. Istilah
representational state transfer dikenalkan dan didefinisikan pada tahun 2000 oleh Roy
Fielding dalam desertasi doktoralnya. Beliau merupakan salah satu penulis utama
spesifikasi HTTP versi 1.0 dan 1.1. Sesuai konstrainnya, REST biasa disebut dengan
“RESTful.”
Arsitektur REST memiliki enam konstrain berikut untuk diterapkan:
1. Client-server
2. Stateless (tidak ada data client yang disimpan selama proses komunikasi)
3. Dapat di-cache
4. Sistem berlapis
5. Code on demand (opsional)
6. Interface yang seragam
Web servis RESTful (disebut juga web API RESTful) adalah sebuah web servis yang
diimplementasikan menggunakan HTTP dan prinsip-prinsip REST. Web servis
RESTful merupakan kumpulan resource yang
aspek-aspek sebagai berikut:
1. URI untuk web servis, seperti http://example.com/resources/
2. Tipe media internet yang didukung oleh web servis. Biasanya XML tetapi dapat
juga berupa tipe lainnya asalkan valid sesuai standar HTTP
3. Set operasi yang didukung oleh web servis dengan metode HTTP (misal: GET,
PUT, POST, atau DELETE)
4. API harus berbasis hypertext
Arsitektur REST, yang umumnya dijalankan via HTTP (Hypertext Transfer Protocol), melibatkan proses pembacaan laman web tertentu yang memuat sebuah file XML atau JSON. File inilah yang menguraikan dan memuat konten yang hendak disajikan. Setelah melalui sebuah proses definisi tertentu, konsumen akan bisa mengakses antarmuka aplikasi yang dimaksudkan.
Kekhasan REST terletak pada interaksi antara klien dan server yang difasilitasi oleh sejumlah tipe operasional (verba) dan Universal Resource Identifiers (URIs) yang unik bagi tiap-tiap sumberdaya. Masing-masing verba – GET, POST, PUT dan DELETE – memiliki makna operasional khusus untuk menghindari ambiguitas.
Library JSON Parser
OkHttp
OkHTTP yaitu sebuah library yang sangat mudah dan membantu sekali dalam urusan hubungan ke internet menggunakan HTTP. Kebanyakan aplikasi Android menggunakan HTTP untuk mengirim dan menerima data melalui internet. Jika aplikasi Anda perlu berkomunikasi melalui internet, untuk mengambil data dari server atau menyimpan data di server, maka kemungkinan bahwa Anda akan perlu menggunakan HTTP untuk melakukan itu. OkHTTP adalah library third-party yang dikembangkan oleh Square yang dapat digunakan untuk mengirim dan menerima HTTP-based network request. Library OkHTTP dibuat dari Okiolibrary, yang dikembangkan dengna tujuan agar lebih efisien dalam mengirim dan menerima data dibandingkan dengan standar Java I/O libary. OkHTTP juga dikembangkan menjadi Retrofit library yang dapat digunakan dalam penggunaan REST-based APIs.
Fitur OkHTTP
OkHttp memudahkan developer android untuk terhubung ke internet menggunakan HTTP, seperti :
OkHTTP mengurusi koneksi ke server.
OkHTTP akan mengulang dan reconncet jika mungkin pada saat jaringanjelek.
OkHTTP akan mencoba alternative server IP addresses jika gagal dan jika alternative IP tersebut tersedia.
Support Synchronously. Support Asynchronously. OkHttp dapat digunakan dari Android 2.3 ke atas.
Retrofit
adalah client HTTP type-safe untuk Android dan Java. Retrofit memudahkan untuk terhubung ke layanan web REST dengan menerjemahkan API ke dalam antarmuka Java. Dalam tutorial ini, saya akan menunjukkan cara menggunakan salah satu perpustakaan HTTP yang paling populer dan sering direkomendasikan untuk Android.
Perpustakaan yang kuat ini mempermudah penggunaan data JSON atau XML, yang kemudian diurai menjadi Plain Old Java Objects (POJOs). Permintaan GET, POST, PUT, PATCH, dan DELETE semua bisa dieksekusi.
Seperti kebanyakan perangkat lunak open-source, Retrofit dibangun di atas beberapa perpustakaan dan alat bantu lainnya. Di balik layar, Retrofit memanfaatkannya OkHttp (dari pengembang yang sama) untuk menangani permintaan jaringan. Selain itu, Retrofit tidak memiliki konverter JSON built-in untuk mengurai dari objek JSON ke Java. Sebagai gantinya, ini mendukung perpustakaan konverter JSON untuk menangani hal itu:
Gson: com.squareup.retrofit:converter-gson Jackson: com.squareup.retrofit:converter-jackson Moshi: com.squareup.retrofit:converter-moshi
Untuk Protocol buffers, Retrofit mendukung:
Protobuf: com.squareup.retrofit2:converter-protobuf Wire: com.squareup.retrofit2:converter-wire
dan untuk XML Retrofit, mendukung:
Simple Framework: com.squareup.retrofit2:converter-simpleframework
Volley
Merupakan library HTTP yang dikembangkan oleh Google. Library ini bertujuan
untuk memudahkan fitur-fitur yang berhubungan dengan jaringan, semisar transfer
teks maupun gambar menggunakan koneksi internet.
Volley merupakan pengganti dari class java.net.HttpURLConnection milik Java
dan org.apache.http.client milik Apache dalam menangani request melalui jaringan.
Volley bisa meng-handle segala tugas yang berhubungan dengan jaringan , seperti
HTTP request dan tugas-tugas yang tersinkronisasi melalui jaringan.
Fitur-fitur Android Volley
Berikut adalah beberapa fitur Volley.
1. Volley memanajemen request jaringan secara otomatis, tanpa
menggunakan AsyncTask. Volley juga bisa menangani jaringan secara
bebarengan, ini membuat operasi jaringan lebih efisien dan cepat.
2. Volley men-cache setiap request jaringan. Ini membuatnya tidak cocok untuk
menangani transfer data dengan ukuran yang besar.
3. Volley memiliki API pembatalan yang powerful, yang mana bisa kita atur sesuai
kebutuhan.
4. Volley memberikan kemudahan kepada Anda untuk mengatur
urutan request jaringan. Ini memudahkan Anda dalam membuat tampilan data
yang urut sesuai dengan kebutuhan Anda.
5. Volley memiliki fitur debugging yang terintegrasi, memudahkan Anda
menemukan error apabila ada.
GSON
GSON adalah library racikan Google untuk melakukan serialisasi dan deserialisasi data JSON dengan mudah.
Serialisasi adalah proses mengubah objek Java menjadi JSON. Sedangkan deserialisasi adalah proses mengubah JSON menjadi objek Java.
Serialisasi dan deserialisasi biasanya dilakukan saat kita bekerja dengan webservice.
JSONP
JSONP adalah salah satu metode untuk mengirim JSON data.JSONP tidak menggunakan objek XMLHttpRequest.
Jackson
Jackson adalah sekelompok alat-alat pengolahan data yang disorot oleh streaming JSON parser dan generator Perpustakaan.Dirancang untuk Java, itu juga bisa menangani pengkodean bebas-JSON lainnya.Hal ini paling populer parser JSON, berdasarkan temuan kami pada Github penggunaan.
Tutorial Simple Project Json Parsing
1. Buat Project Baru
2. Tentukan Target android OS
3. Pilih Empty Activity
4. Configurasi Activity
5. Tambahkan RecyclerView pada MainActivity
Output :
6. Tambahkan Repository Retrofit pada Gradle Module
Zoom in :
7. Tambah permission pada File Manifest
Zoom In :
8. Buatlah Layout Bernama item_book
9. Tambahkan Linear Layout, cardview, imageview, 3 textview dan Button pada layout yang baru di buat
10. Buat ModelBuku.java berfungsi untuk menampung data dari Json
11. Buat Class GetBuku.java untuk menyimpan data berupa Json Array
12. Buat ApiClient.java untuk menginisialisasi Retrofit supaya dapat di gunakan
13. Langkah selanjutnya yaitu buat ApiInteface.java untuk memanggil function yang nantinya akan memanggil method yang berada di web service
14. Buat AdapterBuku.java sebagai adapter untuk recyclerview
15. Tambahkan kode berikut pada MainActivity.java
Output :
Referensi
https://www.codepolitan.com/mengenal-format-json-59e8152dd0e51
https://www.codepolitan.com/mengenal-fastjson-json-parser-untuk-java-dan-android-
57cf8473292da-346
https://www.gookkis.com/android-network-menggunakan-okhttp/
http://vovolley.pe.hu/2017/04/22/apa-itu-android-volley-dan-apa-saja-fitur-fiturnya/
http://pusdiklat.bps.go.id/index.php?r=artikel/view&id=206
https://ekajogja.com/arsip/definisi/rest-representational-state-transfer/
https://github.com/ar-android/BelajarOOP/wiki/POJO-(Plain-Old-Java-Object)