Skip to main content

Java | Mudahnya Konversi Java Object - JSON dengan Google Gson

Pada kesempatan kali ini saya ingin berbagi dengan sahabat tentang konversi object menjadi JSON atau sebaliknya.
Sahabat tentunya sudah tidak asing lagi dengan format JSON bukan? 
Bagi yang belum kenal, silahkan kenalan lebih dalam lewat halaman wikinya ya. :)

Sebenarnya kita bisa membuat coding sendiri untuk melakukan konversi ke format JSON,
karena JSON merupakan format yang berbasis text.
Hanya saja, jika sudah ada yang membuatnya terlebih dahulu dan sudah production ready, terlebih lagi jika pembuatnya adalah Google, kenapa harus membuat library sendiri. 
Ingat prinsip don't reinvent the wheel kan.
Jadi saya memilih untuk menggunakan library Google Gson, yang informasi lebih detailnya bisa dinikmati pada halaman berikut, http://code.google.com/p/google-gson/

Ok, let's get our hand dirty !

Perlu diketahui, seperti biasa saya menggunakan Maven, sehingga untuk menambahkan library Google Gson kita tinggal mengedit file pom.xml dan menambahkan dependency berikut:

<dependency>
 <groupid>com.google.code.gson</groupid>
 <artifactid>gson</artifactid>
 <version>2.2.2</version>
</dependency>

Pertama saya, membuat sebuah class POJO dengan nama Person, sebagai object yang akan dikonversi.

public class Person {

    private String name;
    private int age;
    private List message;

    public Person() {
    }

    public Person(String name, int age, List message) {
        this.name = name;
        this.age = age;
        this.message = message;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public List getMessage() {
        return message;
    }

    public void setMessage(List message) {
        this.message = message;
    }

    @Override
    public String toString() {
        StringBuilder buffer = new StringBuilder();
        buffer.append(String.format("name: %s\n", name));
        buffer.append(String.format("age: %d\n", age));
        buffer.append("message:\n");
        if (null != message) {
            for (String msg : message) {
                buffer.append(String.format("\t%s\n", msg));
            }
        }
        return buffer.toString();
    }
}

Isi classnya sederhana saja, namun saya sudah mengoverride method toString agar hasil System.out.print class Person bisa dibaca dengan mudah.

Google Gson menyediakan class Gson untuk menghandle proses konversi, melalui method toJson dan fromJson.
Berikut saya lampirkan class util yang saya buat

public class JsonUtil {

    public static String convertPersonToJson(Person person) {
        return convertPersonToJson(person, true);
    }

    public static String convertPersonToJson(Person person, boolean prettyPrint) {
        GsonBuilder builder = new GsonBuilder();
        builder.serializeNulls();
        if (prettyPrint) {
            builder.setPrettyPrinting();
        }
        Gson gson = builder.create();

        return gson.toJson(person, Person.class);
    }

    public static Person getPersonFromJson(String json) {
        GsonBuilder builder = new GsonBuilder();
        Gson gson = builder.create();

        return gson.fromJson(json, Person.class);
    }
}

Secara default output json yang dihasilkan oleh Gson masih dalam mode compact,
namun Gson juga menyediakan opsi untuk menghasilkan output json yang lebih mudah dibaca (*disebut prettyprint).

Kemudian kita buat main class untuk mencoba perbedaan antara mode compact dan mode prettyprint.

public class AppLauncher {

    public static void main(String[] args) {
        Person person = new Person();
        person.setName("Eko Suhariyadi");
        person.setAge(26);
        person.setMessage(Arrays.asList("Uzumaki Naruto", "Uchiha Sasuke", "Hatake Kakashi", "Jackson Michael"));

        String jsonCompact = JsonUtil.convertPersonToJson(person, false);
        System.out.println("Json compact:");
        System.out.println(jsonCompact);


        String jsonPretty = JsonUtil.convertPersonToJson(person, true);
        System.out.println("\nJson prettyprint:");
        System.out.println(jsonPretty);

        Person fromJson = JsonUtil.getPersonFromJson(jsonPretty);
        System.out.println(fromJson);
    }
}

Output hasil run main class tersebut adalah sebagai berikut:


Json compact:
{"name":"Eko Suhariyadi","age":26,"message":["Uzumaki Naruto","Uchiha Sasuke","Hatake Kakashi","Jackson Michael"]}

Json prettyprint:
{
  "name": "Eko Suhariyadi",
  "age": 26,
  "message": [
    "Uzumaki Naruto",
    "Uchiha Sasuke",
    "Hatake Kakashi",
    "Jackson Michael"
  ]
}

name: Eko Suhariyadi
age: 26
message:
Uzumaki Naruto
Uchiha Sasuke
Hatake Kakashi
Jackson Michael

Bagaimana, sangat mudah kan !?
Selamat mencoba dan happy coding :).

Source code bisa diakses melalui akun github saya, https://github.com/ekosuhariyadi/belajar-java

Comments

Popular posts from this blog

Java | Menambahkan Dialog Konfirmasi Sebelum Keluar dari Aplikasi

Kali ini saya ingin berbagi cara sederhana untuk menampilkan dialog konfirmasi sebelum keluar dari aplikasi. Dengan syarat aplikasi yang kita buat harus menggunakan JFrame sebagai frame utama. Langkah-langkah yang harus kita lakukan adalah sebagai berikut: 1. Ganti property default close operation dari JFrame menjadi DO_NOTHING_ON_CLOSE, value ini dimaksudkan agar ketika button close dari JFrame diklik tidak akan terjadi apa-apa. Sebaliknya jika valuenya adalah EXIT_ON_CLOSE, maka ketika button close dari JFrame diklik maka program akan tertutup. setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); 2. Yang kedua adalah kita harus menambahkan WindowListener pada JFrame. Interface WindowListener memiliki beberapa method terkait event terhadap window (yakni JFrame), namun yang harus kita override hanyalah method windowClosing, method ini akan dipanggil ketika button close diklik.   Sebagai informasi, apabila kita menambahkan WindowListener secara langsung ...

Bash | Solusi "Warning: remote port forwarding failed for listen port 9000"

Halo Sobat, mohon maaf saya cukup lama hiatus di blog ini. *sok pakai kata hiatus :P Langsung saja saya mau share pengalaman melakukan remote debugging PHP melalui ssh tunnel di port 9000 (standar port xdebug, yap saya menggunakan xdebug untuk debugging aplikasi PHP). Dengan ssh tunnel kita bisa menforward port 9000 dari server yang ada di cloud ke port 9000 di komputer lokal kita, sehingga kita bisa mendebug aplikasi di server melalui IDE/tool debug di komputer lokal. (Saya penyuka PHPStorm, please no IDE war here haha). Namun karena internet yang saya pakai tidak stabil sehingga seringkali ssh tunnel ini freeze di bash window, sehingga saya harus menutup paksa window tersebut. Akibatnya di sisi server, port forwarding masih aktif, jadi ketika saya melakukan tunneling lagi maka akan muncul warning  remote port forwarding failed for listen port 9000. Solusinya adalah kita harus meng-kill proses port forwarding tsb via ssh ke server dengan menjalankan perintah lsof |...

Hardware | Banyak Bersyukur dengan SSD

Seperti yang sudah saya sampaikan pada post sebelumnya, kali ini saya mau membahas upgrade laptop saya ke SSD sebagai "main" hard drive . Saya sudah cukup banyak mendengar mengenai hebatnya kecepatan yang ditawarkan SSD, namun belum mempunyai keinginan untuk upgrade karena ketidaktahuan saya bahwa ada cara untuk memasang SSD ke laptop secara mandiri (*Saya beralih dari PC ke laptop karena adik saya membutuhkan PC saya). Beruntung saya mengikuti feed dari blog Mas Vatih dan menemukan satu artikel menarik mengenai cara memasang SSD di Macbook miliknya. Berbekal info dari post tersebut dan uang tabungan yang cukup, saya memutuskan untuk mencobanya. Saya membeli SSD Crucial MX200 250GB dan HDD Caddy SATA 12.7mm dari JakartaNotebook.com *bukan iklan. Bagi yang belum tahu, HDD Caddy adalah suatu alat yang digunakan untuk memasang hard drive pada slot DVD ROM. Berikut penampakan HDD Caddy HDD Caddy 12.7mm *mirip DVD ROM kan ^^ Perlu diketahui juga bahwa HDD Caddy ...