Langsung ke konten utama

Menggunakan GSON untuk Serialisasi dan Deserialisasi Data JSON di Java

Menggunakan GSON untuk Serialisasi dan Deserialisasi Data JSON di Java



Menggunakan GSON untuk parsing 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…

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.

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.
Library GSON di file pom.xml
Setelah itu, ketik perintah berikut ini untuk menginstalnya:
mvn install
Install Library GSON melalui Maven
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;
    }
    
}

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:
Hasil serialisasi dan deserialisasi data JSON

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);

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:
Hasil deserialisasi data dari Webservice


Komentar

Postingan populer dari blog ini

Apa Saja yang Baru di Java 11?

Apa Saja yang Baru di Java 11? Java 11 sudah dirilis pada tanggal 25 September 2018 kemarin. Banyak ‘pembersihan’ yang terjadi pada versi ini. Seperti: Java EE, CORBA, Java applets, dan Java FX sudah dihapus di dalam JDK  (Java Development Kit) .  1 Tapi tenang saja… mereka masih bisa  di-install dari repositori Mavan . Lalu… Apa saja fitur terbaru pada Java 11? dan apa saja yang akan dihapus? Sebelum kita migrasi atau  upgrade  ke Java 11, kita haurs tahu dua hal ini. Agar aplikasi yang kita bangun dengan Java, bisa berjalan dengan lancar. Mari kita bahas… Download & Install Java 11 Sebelum itu… jika kamu ingin mencoba Java 11, silahkan download JDK-nya:   Download OpenJDK 11   Download OracleJDK 11 Saya akan download OpenJDK 11 untuk Linux. Nanti kita akan mendapatkan sebuah file arsip  tar.gz . Setelah itu ekstrak ke tempat yang aman. Saya akan mengekstraknya ke direktori  ~/apps/ . Apa...

Menghitung Akar Kuadrat dan Akar Kubik dengan Java

Menghitung Akar Kuadrat dan Akar Kubik dengan Java Pada pelajaran Matematika, kadang kita sering menemukan perhitungan akar. Contoh, akar kuadrat dari  25  adalah  5 , karena  5x5=25 , bisa ditulis:  √ 25 = 5 25 = 5 . Lalu kalau akar kubik dari  27  adalah  3 , karena  3x3x3=27 , bisa ditulis:  3 √ 27 = 3 27 3 = 3 . Bagaimana cara kita membuat perhitungan tersebu di Java? Perhitungan akar kuadrat dapat dilakukan dengan fungsi  sqrt() . Fungsi ini terdapat dalam  class   Math . Jadi untuk menghitung akar seperti di atas dalam kode java dapat dilakukan dengan cara berikut ini: Math . sqrt ( 25 ) ; Fungsi tersebut akan menghasilkan:  5 Sementara itu untuk perhitungan akar kubik dapat dilakukan dengan fungsi  cbrt() . Contoh: Math . cbrt ( 27 ) ; Akan menghasilkan:  3 Contoh Penerapannya dalam Program Sekarang mari kita coba membuat program untuk menghitung rumus pitagoras. Rum...

Contoh Program OOP

Contoh Program OOP Kita akan menggunakan Netbeans, silahkan buat project baru. Isi nama project-nya dengan  “BelajarOOP”  dan jangan centang  “Create Main Class” . Setelah itu, silahkan buat  package  baru. Klik kanan pada  <default package> , lalu pilih  New->Java Package . Isi nama  package  dengan  “dasar” : Setelah itu, di dalam package  dasar , silahkan buat  class  baru bernama  Player.java . Klik kanan pada package  dasar  lalu pilih  New->Java Class . Setelah itu, isi namanya dengan  Player.java . Silahkan tulis kode pada  Player.java  seperti ini: package dasar ; public class Player { // definisi atribut String name ; int speed ; int healthPoin ; // definisi method run void run ( ) { System . out . println ( name + " is running..." ) ; System . out . println ( "Speed: " + speed ) ; ...