Membuat aplikasi terintegrasi tidak akan terlepas dari yang namanya Rest Api. Karena terkadang, dalam membangun sebuah sistem kita menggunakan lebih dari satu bahasa pemrograman. Untuk dapat saling bertukar data, maka data yang dikirim harus berupa format data yang di kenali oleh setiap bahasa pemrograman. Format data yang umum digunakan yaitu XML dan Json.
Namun kali ini untuk sementara kita tidak akan membahas fortmat xml tapi akan fokus ke json. Sesuai yang tertera pada judul di atas, kita akan coba memparsing data json yang kita dapatkan menjadi object yang dapat di proses di bahasa pemrograman android kotlin maupun java.
advertisement
Tutorial ini mungkin akan sangat bermanfaat bagi kalian yang mulai menjadi seorang android front end programmer (pemula), dan bagi yang sudah expert mungkin bisa memberikan masukan pada artikel kali ini. Disini kita akan menggunakan library dari google untuk memparsing jsonnya ke bentuk object yaitu Gson library. Oke langsung saja ke tutorialnya.
Instalasi
Buka app module build.gradle project android kalian dan dibagian dependecies masukan code berikut
dependencies {
implementation 'com.google.code.gson:gson:2.8.6'
}
silahkan kalian singkronkan untuk mendownload package gsonnya
Cara Menggunakan
- Sebagai contoh disini saya akan mencoba memparing data json dari reqres.in, link jsonnya sebagi berikut
https://reqres.in/api/users?page=1
Silahkan kalian copy dulu json yang ada di url tersebut
- Buat class modelnya dari json format dengan cara buka jsonschema2pojo.org. Silahkan kalian paste json yang sebelumnya sudah kalian copy dan atur seperti pada gambar
a. Package sesusai nama packgae android kalian
b. Beikan nama classnya yg nanti akan jadi class model nya
c. Stle anotasinya kita menggunakan Gson
Kemudian kalian scroll ke bagian bawah dan klik tombol preview, dan silahkan kalian copy hasilnya
Kalian juga bisa langsung mendapatkan class model nya dalam bentuk zip file dengan mengklik zip. Atau jika kalian ingin filenya dalam bentuk kotlin kalian bisa menggunakan www.json2kotlin.com. - Jika kalian mendownloadnya dalam bentuk zip, kalian bisa mengekstrak hasilnya dan menaruhnya dalam direktori package project android kalian. Jika kalian hanya mengcopy dari preview kalian bisa membuat class java. Klik kanan pada package, klik New dan klik Java Class.
Berikan nama class sesuai nama class pada saat kita mengaturnya di jsonschema2pojo.org
Silahkan kalian paste yang sudah kita copy kedalamnya, dan pasti error kan,, tinggal kalian perbaiki menjadi seperti ini.
package com.zain.tutorialgson; import com.google.gson.annotations.Expose; import com.google.gson.annotations.SerializedName; import java.util.List; class Ad { @SerializedName("company") @Expose private String company; @SerializedName("url") @Expose private String url; @SerializedName("text") @Expose private String text; public String getCompany() { return company; } public void setCompany(String company) { this.company = company; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getText() { return text; } public void setText(String text) { this.text = text; } } class Datum { @SerializedName("id") @Expose private Integer id; @SerializedName("email") @Expose private String email; @SerializedName("first_name") @Expose private String firstName; @SerializedName("last_name") @Expose private String lastName; @SerializedName("avatar") @Expose private String avatar; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public String getAvatar() { return avatar; } public void setAvatar(String avatar) { this.avatar = avatar; } } public class Deretcode { @SerializedName("page") @Expose private Integer page; @SerializedName("per_page") @Expose private Integer perPage; @SerializedName("total") @Expose private Integer total; @SerializedName("total_pages") @Expose private Integer totalPages; @SerializedName("data") @Expose private List<Datum> data = null; @SerializedName("ad") @Expose private Ad ad; public Integer getPage() { return page; } public void setPage(Integer page) { this.page = page; } public Integer getPerPage() { return perPage; } public void setPerPage(Integer perPage) { this.perPage = perPage; } public Integer getTotal() { return total; } public void setTotal(Integer total) { this.total = total; } public Integer getTotalPages() { return totalPages; } public void setTotalPages(Integer totalPages) { this.totalPages = totalPages; } public List<Datum> getData() { return data; } public void setData(List<Datum> data) { this.data = data; } public Ad getAd() { return ad; } public void setAd(Ad ad) { this.ad = ad; } }
Kalo kalian merasa code diatas terlalu panjang, kalian bisa mengkonversinya ke kotlin ko jadi gak pake method setter getter lagi.
- Buat fungsi http request get nya untuk memperoleh data jsonnya dari reqres.in seperti di step pertama, jika kalian belum bisa melakan http request kalian bisa membuka tutorial cara membuat http request di android.
- Kemudian json yang sudah kita dapat kita konversi ke bentuk string dan kita parsing ke bentuk object dengan menggunakan Gson. codenya seperti ini.
Jika Json ObjectDeretcode objectDeretCode = new Gson().fromJson(response.toString(),Deretcode.class);
Jika Json Array
TypeToken<List<Datum>> token = new TypeToken<List<Datum>>() {};
List<Datum> listObject = gson.fromJson(data, token.getType());
Maka syntaxnya kurang lebih seperti iniAndroidNetworking.initialize(getApplicationContext()); AndroidNetworking.get("https://reqres.in/api/users?page=1") .setPriority(Priority.LOW) .build() .getAsJSONObject(new JSONObjectRequestListener() { @Override public void onResponse(JSONObject response) { //Memparsin data Jsonnya dengan Gson yang sudah kita install Deretcode objectDeretCode = new Gson().fromJson(response.toString(),Deretcode.class); for (Datum datum: objectDeretCode.getData()) { Log.d("First Name:",datum.getFirstName()); Log.d("Last Name:",datum.getLastName()); Log.d("Email:",datum.getEmail()); } } @Override public void onError(ANError error) { Log.d("Error:",error.getMessage()); } });
Tambahan: Jika kalian ingin mengkonversi Object ke Json String codenya seperti ini
String JsonString =new Gson().toJson(objectModel);
advertisement
Sekian dulu tutorial parsing json ke object di android, terimakasih sudah mampir. Jangan lupa di share jika kalian merasa artikel ini bermanfaat, kalau ada pertanyaan silahkan tulis di kolom komentar. Good Luck!
Silahkan berkomentar dengan baik dan bijak!