Sudah 2020, Retrofit enak pakai Moshi atau GSON? (JSON Converter)

Azis Naufal
UNIKOM Codelabs
Published in
2 min readApr 16, 2020

Hai…!
Di story kali ini, saya bakalan bercerita santuy saja tentang JSON converter. Buat yang belum tahu, JSON converter itu adalah alat yang digunakan untuk mengonversi kalimat JSON (string) menjadi sebuah obyek atau sebaliknya. Mengonversi obyek menjadi kalimat JSON. Biasanya kalo sudah jadi sebuah obyek dalam bahasa pemrogramannya, kita bisa mengakses atributnya melalui variabel untuk diolah lebih dalam.

Perbedaannya pas ngekoding di Network Data Class-nya.

Ini Moshi:

data class UserEntity(@Json(name = “id”) val id: String,
@Json(name = “name”) val name: String)

Ini Gson:

data class UserEntity(@SerializedName(name = “id”) val id: String,
@SerializedName(name = “name”) val name: String)

Perbedaannya pas ngekoding di obyek retrofit-nya.

Ini Moshi:

...
.addConverterFactory(MoshiConverterFactory.create())
...

Ini Gson:

...
.addConverterFactory(GsonConverterFactory.create())
...

Terus bedanya apa lagi?

Kalo yang orang bilang sih performanya.
Ini saya cuma mengutip beberapa bagian dari medium orang lain. Ini artikelnya:

Jadi di artikel itu, dia membandingkan dari keempat library JSON Converter yang dia pakai. Lalu dia membuat empat ukuran yang jadi pembandingnya:

  1. Waktu yang dihabiskan untuk mengubah kalimat JSON dalam mil detik.
  2. Waktu yang dihabiskan untuk mengubah obyek ke JSON dalam mil detik.
  3. Panjang nya si JSON (Jumlah karakter dalam kalimat JSON).
  4. Metode atau fungsi yang ada pada setiap library.
Pada sisi kiri adalah ketika perbandingan ini dijalankan pertama kali. Pada sisikan adalah perbandingan dijalankan kedua kalinya dan seterusnya. (credit : @dannydamsky99)

Terlihat kan apa mana yang lebih cepat di antara GSON dan Moshi terutama dalam deserializaition?

Kenapa yang dilihat deseralization-nya? Karena aplikasi android biasanya digunakan untuk mengonsumsi API yang bentuk awalnya JSON ke dalam obyek Kotlin atau Java. Bukan menjadi layanan penyedia API untuk aplikasi lain.

Ya, cukup sekian story ringan tapi berbobot kali ini. Tetap semangat dalam belajar!! 😄

--

--

Azis Naufal
UNIKOM Codelabs

Mobile Engineer — Android , Backend Engineer — Laravel/Lumen