Menggunakan GSON untuk Serialisasi dan Deserialisasi Data JSON di Java
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 obejek Java.
Serialisasi dan deserialisasi biasanya dilakukan saat kita bekerja dengan webservice.
Pada kesempatan ini, kita akan belajar menggunakan library GSON untuk serialisasi dan deserialisasi data JSON secara langsung dari kode dan deserialisasi dari webservice.
Mari kita mulai…
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 obejek Java.
Serialisasi dan deserialisasi biasanya dilakukan saat kita bekerja dengan webservice.
Pada kesempatan ini, kita akan belajar menggunakan library GSON untuk serialisasi dan deserialisasi data JSON secara langsung dari kode dan deserialisasi dari webservice.
Mari kita mulai…
Membuat Project dengan Maven
Pada tutorial ini, kita akan menggunakan Maven untuk membuat project dan menginstal library GSON.
Silahkan ketik perintah berikut ini untuk membuat project dengan Maven.
mvn archetype:generate \
-DgroupId=com.petanikode.app \
-DartifactId=petanikode-app \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DinteractiveMode=false
Setelah itu, silahkan buka project ini dengan teks editor atau IDE.
Pada tutorial ini, kita akan menggunakan Maven untuk membuat project dan menginstal library GSON.
Silahkan ketik perintah berikut ini untuk membuat project dengan Maven.
mvn archetype:generate \
-DgroupId=com.petanikode.app \
-DartifactId=petanikode-app \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DinteractiveMode=false
Setelah itu, silahkan buka project ini dengan teks editor atau IDE.
Menambahkan Library GSON ke Project
Berikutnya kita akan tambahkan Si GSON dengan cara menambahkan kode depdency ini:
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.2</version>
</dependency>
di dalam file pom.xml
.
Setelah itu, ketik perintah berikut ini untuk menginstalnya:
mvn install
Tunggu sampai prosesnya selsai…
Berikutnya kita akan tambahkan Si GSON dengan cara menambahkan kode depdency ini:
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.2</version>
</dependency>
di dalam file
pom.xml
.
Setelah itu, ketik perintah berikut ini untuk menginstalnya:
mvn install
Tunggu sampai prosesnya selsai…
Membuat Class Model
Sebelum kita bisa menggunakan GSON, kita harus membuat class model yang akan menjadi template objeknya.
Sebagai contoh, kita akan menggunakan class User
. Silahkan buat class User
seperti ini:
public class User {
public String name, email;
public int umur;
public User(String name, String email, int umur){
this.name = name;
this.email = email;
this.umur = umur;
}
}
Sebelum kita bisa menggunakan GSON, kita harus membuat class model yang akan menjadi template objeknya.
Sebagai contoh, kita akan menggunakan class
User
. Silahkan buat class User
seperti ini:public class User {
public String name, email;
public int umur;
public User(String name, String email, int umur){
this.name = name;
this.email = email;
this.umur = umur;
}
}
Membuat Class Main
Untuk melakukan percobaan, kita akan membuat class Main.java
dengan isi sebagai berikut:
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class Main {
public static void main(String[] args) {
User mUser = new User("Petani Kode", "info@petanikode.com", 22);
// ubah objek menjadi string JSON
Gson gson = new Gson();
String jsonUser = gson.toJson(mUser);
System.out.println(jsonUser);
// ubah string JSON menjadi Objek
Gson gsonBuilder = new GsonBuilder().create();
User myUser = gsonBuilder.fromJson(jsonUser, User.class);
System.out.println(myUser.name);
}
}
Coba eksekusi…
…maka hasilnya:
Untuk melakukan percobaan, kita akan membuat class
Main.java
dengan isi sebagai berikut:import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class Main {
public static void main(String[] args) {
User mUser = new User("Petani Kode", "info@petanikode.com", 22);
// ubah objek menjadi string JSON
Gson gson = new Gson();
String jsonUser = gson.toJson(mUser);
System.out.println(jsonUser);
// ubah string JSON menjadi Objek
Gson gsonBuilder = new GsonBuilder().create();
User myUser = gsonBuilder.fromJson(jsonUser, User.class);
System.out.println(myUser.name);
}
}
Coba eksekusi…
…maka hasilnya:
Penjelasan:
Sebelum dapat menggunakan class dari library GSON, kita harus mengimportnya terlebih dahulu.
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
Setelah itu, kita coba membuat objek bernama mUser
.
User mUser = new User("Petani Kode", "info@petanikode.com", 22);
Berikutnya kita buat objek gson
dan mengubah objek mUser
menjadi JSON.
// ubah objek menjadi string JSON
Gson gson = new Gson();
String jsonUser = gson.toJson(mUser);
System.out.println(jsonUser);
Kita menggunakan method toJson()
dengan paramter objek dari class yang akan kita ubah ke dalam bentuk JSON (serialisasi).
Sedangkan untuk proses mengubah JSON menjadi Objek, caranya seperti ini:
Gson gsonBuilder = new GsonBuilder().create();
User myUser = gsonBuilder.fromJson(jsonUser, User.class);
System.out.println(myUser.name);
Pertama kita buat dulu objek GSON dari GsonBuilder().create()
. Setelah itu membuat Obejek myUser
dengan method fromJson()
.
Method fromJson()
memiliki dua parameter:
gsonBuilder.fromJson(<string JSON>, User.class);
Sebelum dapat menggunakan class dari library GSON, kita harus mengimportnya terlebih dahulu.
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
Setelah itu, kita coba membuat objek bernama
mUser
. User mUser = new User("Petani Kode", "info@petanikode.com", 22);
Berikutnya kita buat objek
gson
dan mengubah objek mUser
menjadi JSON.// ubah objek menjadi string JSON
Gson gson = new Gson();
String jsonUser = gson.toJson(mUser);
System.out.println(jsonUser);
Kita menggunakan method
toJson()
dengan paramter objek dari class yang akan kita ubah ke dalam bentuk JSON (serialisasi).
Sedangkan untuk proses mengubah JSON menjadi Objek, caranya seperti ini:
Gson gsonBuilder = new GsonBuilder().create();
User myUser = gsonBuilder.fromJson(jsonUser, User.class);
System.out.println(myUser.name);
Pertama kita buat dulu objek GSON dari
GsonBuilder().create()
. Setelah itu membuat Obejek myUser
dengan method fromJson()
.
Method
fromJson()
memiliki dua parameter:gsonBuilder.fromJson(<string JSON>, User.class);
Desrialisasi JSON dari Webservice
Untuk mengubah JSON ke objek Java dari data JSON yang ada di web service, kita membutuhkan library tambahan lagi. Yaitu: library untuk melakukan HTTP Request ke webservicenya.
Ada banyak sekali library untuk melakukan HTTP Request di Java. Kita akan coba pakai library Apache HttpClient.
Silahkan tambahkan ke dalam depedencies.
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.4</version>
</dependency>
Lakukan instalasi lagi:
mvn install
Setelah itu, kita akan buat kode untuk melakukan HTTP Request ke webservice untuk mengambil data JSON. Nanti hasil dari HTTP Request ini akan berupa string JSON.
Kita akan mengambil data JSON dari: https://api.github.com/users/petanikode
Langkah yang dilakukan berikutnya adalah membuat class untuk data JSON tersebut. Silahkan buat class baru bernama GithubUser
seperti ini:
public class GithubUser {
String name;
String email;
String blog;
String location;
String html_url;
}
Nama properti yang digunakan, pastikan sama seperti nama properti pada JSON-nya. Karena kalau tidak, properti tersebut akan bernilai null
.
Untuk tipe data, kita berikan saja semuanya String
. Karena properti yang ingin kita ambil berteipe string semua.
Setelah itu, modifikasi class Main.java
menjadi seperti ini:
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
/**
*
* @author petanikode
*/
public class Hello {
public static void main(String[] args) {
User mUser = new User("Petani Kode", "info@petanikode.com", 22);
// ubah objek menjadi string JSON
Gson gson = new Gson();
String jsonUser = gson.toJson(mUser);
System.out.println(jsonUser);
// ubah string JSON menjadi Objek
Gson gsonBuilder = new GsonBuilder().create();
User myUser = gsonBuilder.fromJson(jsonUser, User.class);
System.out.println(myUser.name);
// deserialisasi data JSON dari Webservice
try {
String jsonWeb = getJson("https://api.github.com/users/petanikode");
GithubUser gitUser = gson.fromJson(jsonWeb, GithubUser.class);
System.out.println("Hasil deserialisasi dari Webservice: ");
System.out.println(gitUser.name);
System.out.println(gitUser.email);
System.out.println(gitUser.blog);
System.out.println(gitUser.location);
System.out.println(gitUser.html_url);
} catch (Exception e) {
System.out.println("Terjadi masalah: " + e.getMessage());
}
}
public static String getJson(String url) throws Exception {
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet(url);
// add request header
request.addHeader("User-Agent", "Mozilla/5.0");
HttpResponse response = client.execute(request);
System.out.println("\nSending 'GET' request to URL : " + url);
System.out.println("Response Code : "
+ response.getStatusLine().getStatusCode());
BufferedReader rd = new BufferedReader(
new InputStreamReader(response.getEntity().getContent()));
StringBuffer result = new StringBuffer();
String line = "";
while ((line = rd.readLine()) != null) {
result.append(line);
}
return result.toString();
}
}
Pada kode di atas, kita menambahkan method getJson()
untuk melakukan HTTP Request ke webservice dengan library Apache HTTP Client. Hasil kembalian dari method ini adalah String JSON.
Lalu diserialisasi oleh GSON, maka hasilnya akan seperti ini:
Untuk mengubah JSON ke objek Java dari data JSON yang ada di web service, kita membutuhkan library tambahan lagi. Yaitu: library untuk melakukan HTTP Request ke webservicenya.
Ada banyak sekali library untuk melakukan HTTP Request di Java. Kita akan coba pakai library Apache HttpClient.
Silahkan tambahkan ke dalam depedencies.
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.4</version>
</dependency>
Lakukan instalasi lagi:
mvn install
Setelah itu, kita akan buat kode untuk melakukan HTTP Request ke webservice untuk mengambil data JSON. Nanti hasil dari HTTP Request ini akan berupa string JSON.
Kita akan mengambil data JSON dari: https://api.github.com/users/petanikode
Langkah yang dilakukan berikutnya adalah membuat class untuk data JSON tersebut. Silahkan buat class baru bernama
GithubUser
seperti ini:public class GithubUser {
String name;
String email;
String blog;
String location;
String html_url;
}
Nama properti yang digunakan, pastikan sama seperti nama properti pada JSON-nya. Karena kalau tidak, properti tersebut akan bernilai
null
.
Untuk tipe data, kita berikan saja semuanya
String
. Karena properti yang ingin kita ambil berteipe string semua.
Setelah itu, modifikasi class
Main.java
menjadi seperti ini:import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
/**
*
* @author petanikode
*/
public class Hello {
public static void main(String[] args) {
User mUser = new User("Petani Kode", "info@petanikode.com", 22);
// ubah objek menjadi string JSON
Gson gson = new Gson();
String jsonUser = gson.toJson(mUser);
System.out.println(jsonUser);
// ubah string JSON menjadi Objek
Gson gsonBuilder = new GsonBuilder().create();
User myUser = gsonBuilder.fromJson(jsonUser, User.class);
System.out.println(myUser.name);
// deserialisasi data JSON dari Webservice
try {
String jsonWeb = getJson("https://api.github.com/users/petanikode");
GithubUser gitUser = gson.fromJson(jsonWeb, GithubUser.class);
System.out.println("Hasil deserialisasi dari Webservice: ");
System.out.println(gitUser.name);
System.out.println(gitUser.email);
System.out.println(gitUser.blog);
System.out.println(gitUser.location);
System.out.println(gitUser.html_url);
} catch (Exception e) {
System.out.println("Terjadi masalah: " + e.getMessage());
}
}
public static String getJson(String url) throws Exception {
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet(url);
// add request header
request.addHeader("User-Agent", "Mozilla/5.0");
HttpResponse response = client.execute(request);
System.out.println("\nSending 'GET' request to URL : " + url);
System.out.println("Response Code : "
+ response.getStatusLine().getStatusCode());
BufferedReader rd = new BufferedReader(
new InputStreamReader(response.getEntity().getContent()));
StringBuffer result = new StringBuffer();
String line = "";
while ((line = rd.readLine()) != null) {
result.append(line);
}
return result.toString();
}
}
Pada kode di atas, kita menambahkan method
getJson()
untuk melakukan HTTP Request ke webservice dengan library Apache HTTP Client. Hasil kembalian dari method ini adalah String JSON.
Lalu diserialisasi oleh GSON, maka hasilnya akan seperti ini:
Komentar
Posting Komentar